计算字符串中用户指定字符的出现次数

时间:2014-03-20 06:04:05

标签: java string for-loop character

我的程序应该计算用户输入的字符出现在字符串中的次数。出于某种原因,我的程序不执行for循环。在打印出“输入要搜索的字符串:”后,它不允许我输入字符串并打印出:“'(输入的字符串)'中出现'(输入字符)'0次。”在一条新线上。我需要它能够在作为字符串输入的任何给定数量的单词中找到字符的出现。我该怎么做才能使它正常运作?感谢。

import java.util.Scanner;

public class CountCharacters {

    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);

        System.out.println("Enter a character for which to search: ");
        char ch = input.next().charAt(0);

        System.out.println("Enter the string to search: ");
        String str = input.nextLine();

        int counter = 0;

        for (int i = 0; i < str.length(); i++) {
            if (ch == str.charAt(i)) {
                counter++;

            }

        }
        System.out.printf("There are %d occurrences of '%s' in '%s'.", counter, ch, str);
        System.out.println();

    }

}

2 个答案:

答案 0 :(得分:4)

当您按 Enter 时,next()方法不会消耗输入的换行符,会发生什么情况。由于该角色仍在等待阅读,nextLine()会消耗它。要解决此问题,您可以在nextLine()电话后添加next()

char ch = input.next().charAt(0);
input.nextLine(); // consumes new-line character

// ...

有关更多信息,请阅读此post

答案 1 :(得分:2)

输入您的号码后我猜您正在按<enter>所以这需要在输入字符串之前被咀嚼

char ch = input.next().charAt(0);
input.nextLine();
System.out.println("Enter the string to search: ");
String str = input.nextLine();