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

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);

        }

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


输入字符串


Hello world 输入一个字母



0 l 在你好世界


0 l 在你好世界


1 l 在你好世界


2 l 在你好世界


2 l 在你好世界


2 l 在你好世界


2 l 在你好世界


2 l 在你好世界


2 l 在你好世界


3 l 在你好世界


3 l 在你好世界


九州编程
浏览 188回答 2
2回答

大话西游666

如果您不跟踪代码,则不应将输出语句放入循环中:int res = 0;for (int i = 0; i < s.length(); i++){&nbsp; &nbsp; if (s.charAt(i) == c)&nbsp; &nbsp; &nbsp; &nbsp; res++;}System.out.print(res + " " + c + " in" + s);

函数式编程

因为您的打印语句存在于循环中,所以每次执行循环时它都会打印当前计数,从而为您提供多行/计数。将打印移到循环之外将确保它只在整个字符串被解析后执行一次:private static void CountLetters(Scanner sc) {&nbsp; &nbsp; &nbsp; &nbsp; System.out.println("Enter a string");&nbsp; &nbsp; &nbsp; &nbsp; String s = sc.nextLine();&nbsp; &nbsp; &nbsp; &nbsp; System.out.println("Enter a letter");&nbsp; &nbsp; &nbsp; &nbsp; char c = sc.nextLine().charAt(0);&nbsp; &nbsp; &nbsp; &nbsp; int res = 0;&nbsp; &nbsp; &nbsp; &nbsp; for (int i = 0; i < s.length(); i++) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (s.charAt(i) == c)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; res++;&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; // Moved print statement outside of the loop; changed "i" to "in".&nbsp; &nbsp; &nbsp; &nbsp; System.out.println(res + " " + c + " in" + s);&nbsp; &nbsp; }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java