在java应用程序中,经常需要从用户那里获取输入,并根据特定规则对这些输入进行分析和统计。例如,我们可能需要计算用户输入的所有字符串中,有多少是符合“单词”定义的,或者有多少单词是以大写字母开头的。本教程将引导您完成这样一个任务,提供一个健壮且易于扩展的解决方案。
要实现字符串百分比的计算,我们将主要使用以下Java特性和技术:
首先,程序需要询问用户打算输入多少个字符串。这一步需要确保用户输入的是一个有效的整数。
import java.util.Scanner; public class StringPercentageCalculator { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int numOfStrings = 0; boolean validInput = false; // 循环直到用户输入一个有效的整数 do { System.out.print("请输入您要输入的字符串数量: "); try { numOfStrings = Integer.parseInt(scan.nextLine()); validInput = true; // 输入有效,跳出循环 } catch (NumberFormatException e) { System.out.println("错误: 输入的不是一个有效的数字。请重新输入。"); validInput = false; // 输入无效,继续循环 } } while (!validInput); // ... 后续代码 } }
注意事项:
在确定了字符串数量之后,程序应该循环收集用户输入的每一个字符串,并将它们存储在一个数组中。这样做的好处是,所有的输入都收集完毕后,可以统一进行分析和计算,而不是在输入过程中进行即时验证和计数。
立即学习“Java免费学习笔记(深入)”;
// ... (接上一步代码) String[] stringInputs = new String[numOfStrings]; // 创建字符串数组 System.out.println("请逐一输入您的字符串:"); for (int i = 0; i < numOfStrings; i++) { System.out.print("输入第 " + (i + 1) + " 个字符串: "); // 提示用户输入第i+1个字符串 stringInputs[i] = scan.nextLine(); // 将用户输入存储到数组中 } // ... 后续代码
注意事项:
正则表达式是进行字符串模式匹配的强大工具。我们将定义两个正则表达式来满足本教程的需求:
为了提高代码的复用性,我们将创建一个辅助方法 countStrings,它接受一个字符串数组和一个正则表达式模式作为参数,并返回数组中符合该模式的字符串数量。
// ... (在 main 方法之外定义) /** * 统计字符串数组中符合指定正则表达式模式的字符串数量。 * * @param strings 待统计的字符串数组。 * @param pattern 用于匹配的正则表达式。 * @return 符合模式的字符串数量。 */ private static int countStrings(String[] strings, String pattern) { int count = 0; for (String str : strings) { if (str != null && str.matches(pattern)) { // 检查字符串是否为null,然后进行匹配 count++; } } return count; }
注意事项:
有了 countStrings 辅助方法,我们就可以轻松地计算出各种类型的字符串数量,并进一步计算它们的百分比。
// ... (接上一步 main 方法代码) System.out.println("\n--- 分析结果 ---"); System.out.println("总共输入的字符串数量: " + numOfStrings); // 计算只包含字母的单词百分比 int validWordCount = countStrings(stringInputs, "^[a-zA-Z]*$"); // 确保进行浮点数除法以获得精确百分比 double percentageOfWords = (numOfStrings > 0) ? ((double) validWordCount / numOfStrings) * 100 : 0.0; System.out.printf("只包含字母的单词百分比: %.2f%%%n", percentageOfWords); // 计算以大写字母开头的单词百分比 int startWithCapitalCount = countStrings(stringInputs, "^[A-Z].*"); double percentageOfCapitalWords = (numOfStrings > 0) ? ((double) startWithCapitalCount / numOfStrings) * 100 : 0.0; System.out.printf("以大写字母开头的单词百分比: %.2f%%%n", percentageOfCapitalWords); scan.close(); // 关闭Scanner对象,释放资源 } }
注意事项:
将以上所有部分整合起来,形成一个完整的Java程序:
import java.util.Scanner; public class StringPercentageCalculator { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int numOfStrings = 0; boolean validInput = false; // 1. 获取用户输入字符串的数量 do { System.out.print("请输入您要输入的字符串数量: "); try { numOfStrings = Integer.parseInt(scan.nextLine()); validInput = true; } catch (NumberFormatException e) { System.out.println("错误: 输入的不是一个有效的数字。请重新输入。"); validInput = false; } } while (!validInput); // 2. 收集所有字符串输入 String[] stringInputs = new String[numOfStrings]; System.out.println("\n请逐一输入您的字符串:"); for (int i = 0; i < numOfStrings; i++) { System.out.print("输入第 " + (i + 1) + " 个字符串: "); stringInputs[i] = scan.nextLine(); } // 3. 计算并展示结果 System.out.println("\n--- 分析结果 ---"); System.out.println("总共输入的字符串数量: " + numOfStrings); // 计算只包含字母的单词百分比 int validWordCount = countStrings(stringInputs, "^[a-zA-Z]*$"); double percentageOfWords = (numOfStrings > 0) ? ((double) validWordCount / numOfStrings) * 100 : 0.0; System.out.printf("只包含字母的单词百分比: %.2f%%%n", percentageOfWords); // 计算以大写字母开头的单词百分比 int startWithCapitalCount = countStrings(stringInputs, "^[A-Z].*"); double percentageOfCapitalWords = (numOfStrings > 0) ? ((double) startWithCapitalCount / numOfStrings) * 100 : 0.0; System.out.printf("以大写字母开头的单词百分比: %.2f%%%n", percentageOfCapitalWords); scan.close(); // 关闭Scanner } /** * 统计字符串数组中符合指定正则表达式模式的字符串数量。 * * @param strings 待统计的字符串数组。 * @param pattern 用于匹配的正则表达式。 * @return 符合模式的字符串数量。 */ private static int countStrings(String[] strings, String pattern) { int count = 0; for (String str : strings) { if (str != null && str.matches(pattern)) { count++; } } return count; } }
本教程展示了如何在Java中实现一个健壮的字符串分析程序。通过分离输入收集和数据处理逻辑,并利用正则表达式进行灵活的模式匹配,我们能够有效地计算出各种类型字符串的百分比。关键点包括:正确处理用户输入异常、将所有输入存储在数组中以便统一处理、使用辅助方法封装重复逻辑、以及利用正则表达式进行高效的字符串验证。这些实践不仅提高了代码的可读性和可维护性,也为处理更复杂的文本分析任务奠定了基础。
以上就是Java字符串输入中单词百分比计算教程的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 //m.sbmmt.com/ All Rights Reserved | php.cn | 湘ICP备2023035733号