
在java应用程序开发中,经常需要对用户输入的字符串进行验证和统计。例如,我们可能需要统计用户输入的所有字符串中,有多少是纯粹的单词,或者有多少是以大写字母开头的。本教程将指导您如何构建一个健壮的java程序来完成这些任务。
首先,我们需要获取用户希望输入的字符串数量,并确保这个数量是有效的数字。接着,程序将根据这个数量逐一收集用户输入的字符串。
1.1 获取字符串数量
使用 Scanner 类获取用户输入的字符串总数。关键在于使用 try-catch 块来处理 NumberFormatException,以防用户输入非数字内容。
import java.util.Scanner;
public class StringAnalysis {
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);
// ... 后续代码
}
// ... 其他方法
}1.2 存储所有输入的字符串
立即学习“Java免费学习笔记(深入)”;
一个常见的错误是在用户输入时立即进行统计。为了能够对所有输入进行全面的分析,最佳实践是先将所有字符串存储在一个数组中,待所有输入完成后再进行统一处理。
String[] stringArray = new String[numOfStrings];
for (int i = 0; i < numOfStrings; i++) {
System.out.print("请输入第 " + (i + 1) + " 个字符串: ");
String input = scan.nextLine();
stringArray[i] = input;
}这里我们使用了从0开始的循环索引 i,这是Java数组的标准做法,更符合习惯。
正则表达式 (Regex) 是处理字符串模式的强大工具。Java的 String.matches() 方法可以方便地检查一个字符串是否与给定的正则表达式匹配。
2.1 匹配纯字母单词
一个纯字母的单词通常只包含大小写英文字母。我们可以使用正则表达式 ^[a-zA-Z]*$ 来匹配这种模式。
2.2 匹配以大写字母开头的单词
要匹配以大写字母开头的字符串,可以使用正则表达式 ^[A-Z].*。
为了提高代码的可重用性和可读性,我们可以创建一个独立的辅助方法来根据给定的正则表达式模式统计数组中匹配的字符串数量。
private static int countStrings(String[] strings, String pattern) {
int count = 0;
for (String str : strings) {
if (str.matches(pattern)) {
count++;
}
}
return count;
}这个 countStrings 方法接收一个字符串数组和一个正则表达式模式作为参数,遍历数组并返回匹配模式的字符串数量。
在所有字符串收集完毕并统计出符合特定模式的数量后,就可以计算相应的百分比并输出结果。
System.out.println("\n--- 分析结果 ---");
System.out.println("总字符串数: " + numOfStrings);
// 统计纯字母单词的百分比
int validWordCount = countStrings(stringArray, "^[a-zA-Z]*$");
double percentageOfWords = (double) validWordCount / numOfStrings * 100;
System.out.printf("纯字母单词的百分比: %.2f%%\n", percentageOfWords);
// 统计以大写字母开头的单词的百分比
int startsWithCapitalCount = countStrings(stringArray, "^[A-Z].*");
double percentageOfCapitalWords = (double) startsWithCapitalCount / numOfStrings * 100;
System.out.printf("以大写字母开头的单词百分比: %.2f%%\n", percentageOfCapitalWords);
scan.close(); // 关闭Scanner这里使用了 String.format() 或 System.out.printf() 来格式化输出,保留两位小数,并正确显示百分号。
结合上述所有部分,以下是完整的Java代码示例:
import java.util.Scanner;
public class StringAnalysis {
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());
if (numOfStrings < 0) { // 额外增加对负数的校验
System.out.println("字符串总数不能为负数,请重新输入。");
validInput = false;
} else {
validInput = true;
}
} catch (NumberFormatException e) {
System.out.println("输入无效,请输入一个数字。");
validInput = false;
}
} while (!validInput);
// 2. 存储所有输入的字符串
String[] stringArray = new String[numOfStrings];
for (int i = 0; i < numOfStrings; i++) {
System.out.print("请输入第 " + (i + 1) + " 个字符串: ");
String input = scan.nextLine();
stringArray[i] = input;
}
// 3. 分析并展示结果
System.out.println("\n--- 分析结果 ---");
System.out.println("总字符串数: " + numOfStrings);
if (numOfStrings > 0) { // 避免除以零错误
// 统计纯字母单词的百分比
int validWordCount = countStrings(stringArray, "^[a-zA-Z]*$");
double percentageOfWords = (double) validWordCount / numOfStrings * 100;
System.out.printf("纯字母单词的百分比: %.2f%%\n", percentageOfWords);
// 统计以大写字母开头的单词的百分比
int startsWithCapitalCount = countStrings(stringArray, "^[A-Z].*");
double percentageOfCapitalWords = (double) startsWithCapitalCount / numOfStrings * 100;
System.out.printf("以大写字母开头的单词百分比: %.2f%%\n", percentageOfCapitalWords);
} else {
System.out.println("没有输入任何字符串,无法计算百分比。");
}
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)) { // 增加null检查以提高健壮性
count++;
}
}
return count;
}
}通过遵循这些原则和方法,您可以有效地处理和分析Java中的字符串输入,构建出更健壮、更专业的应用程序。
以上就是Java中输入字符串单词百分比及特定模式识别教程的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号