为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

九州编程 2021-08-25 15:23:02
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 在你好世界
查看完整描述

2 回答

?
大话西游666

TA贡献1817条经验 获得超14个赞

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


int res = 0;

for (int i = 0; i < s.length(); i++)

{

    if (s.charAt(i) == c)

        res++;

}

System.out.print(res + " " + c + " in" + s);


查看完整回答
反对 回复 2021-08-25
?
函数式编程

TA贡献1807条经验 获得超9个赞

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


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

    }


查看完整回答
反对 回复 2021-08-25
  • 2 回答
  • 0 关注
  • 187 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信