如何修改Java while循环实现#终止输入,修正字母计数输出格式问题
修改后可直接运行的完整代码
import java.util.Scanner; public class MyClass { public static void main(String args[]) { Scanner sc = new Scanner(System.in); while (true) { // 每一行单独计数,数组放在循环内实现每次重置 int a[] = new int[26]; String str = sc.nextLine(); // 识别到#终止输入 if (str.equals("#")) { break; } // 统计当前行字母数量 for (char ch : str.toCharArray()) { if (ch >= 'A' && ch <= 'Z') { a[ch - 'A']++; } else if (ch >= 'a' && ch <= 'z') { a[ch - 'a']++; } } // 输出当前行统计结果,处理空格分隔 boolean isFirst = true; for (int i = 0; i < 26; i++) { if (a[i] > 0) { if (!isFirst) { System.out.print(" "); } System.out.print((char)(i + 'a') + "(" + a[i] + ")"); isFirst = false; } } // 每行输出结束换行 System.out.println(); } sc.close(); } }
核心改动点
- 新增while死循环逐行读取输入,判断读取内容为
#时直接终止循环 - 将计数数组
a的定义移动到循环内部,保证每行计数独立,不会和之前输入的行累计 - 输出新增首项标记,非第一个计数项前加空格,每行统计完成后换行,符合输出格式要求
内容的提问来源于stack exchange,提问作者iman farhana
相关产品推荐
相关产品推荐

