
在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 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号