输出重复的次数与尝试计算图表时插入的字母一样多

  • 本文关键字:插入 一样 输出 计算 java
  • 更新时间 :
  • 英文 :

private static void CountLetters(Scanner sc) {
System.out.println("Enter a string");
String s = sc.nextLine();
System.out.println("Enter a letter");
char c = sc.nextLine().charAt(0);
int res = 0;
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) == c) 
res++;
System.out.println(res + " " + c + " i " + s);
}

输出重复的次数与字母一样多。知道为什么以及如何解决它吗? 电流输出示例:

输入字符串

世界您好 输入一个字母

l

0 l in 你好世界

0 l in 你好世界

1 升在你好世界

2 升在你好世界

2 升在你好世界

2 升在你好世界

2 升在你好世界

2 升在你好世界

2 升在你好世界

3 l in 你好世界

3 l in 你好世界

如果不跟踪代码,则不应将输出语句放在循环中:

int res = 0;
for (int i = 0; i < s.length(); i++)
{
if (s.charAt(i) == c)
res++;
}
System.out.print(res + " " + c + " in" + s);

因为您的 print 语句存在于循环中,所以每次执行循环时它都会打印当前计数,从而为您提供多行/计数。将打印移动到循环之外将确保它仅在解析整个字符串后执行一次:

private static void CountLetters(Scanner sc) {
System.out.println("Enter a string");
String s = sc.nextLine();
System.out.println("Enter a letter");
char c = sc.nextLine().charAt(0);
int res = 0;
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) == c)
res++;
}
// Moved print statement outside of the loop; changed "i" to "in".
System.out.println(res + " " + c + " in" + s);
}

最新更新