0

我已经浏览了我可以在这里找到的所有相关内容,但由于某种原因,没有任何帮助。每当我运行它时,我总是以 0 的结果结束。不,我不能为此使用其他库(我看到了一些很棒的解决方案,它们可以简化为一行,但我不能这样做)

public void process()
{
    Scanner input = new Scanner(System.in);
    System.out.println("Enter your String:");
    String in_string = input.nextLine();

    Scanner input2 = new Scanner(System.in);
    System.out.println("Press 1 to count the occurrence of a particular letter.");
    System.out.println("Press 2 to count the total words in your input sentance.");
    System.out.println("Press 3 to change your input sentance.");
    System.out.println("Press 4 to exit.");

    int option = input2.nextInt();

    if (option==1)
    {
        System.out.println("Choose your letter: ");
        String in_occurence = input.nextLine();


        for(int i = 0 ; i < in_string.length(); i++)
        {
            if(in_occurence.equals(in_string.charAt(i)))
            {
                charCount++;
            }
        }
        System.out.println(charCount);
    }
4

2 回答 2

2

您正在将 aStringcharusing进行比较String#equals()。那将永远给你false

例如:

System.out.println("a".equals('a'));  // false

在比较之前,您应该通过在索引 0 处获取字符来转换Stringchar

if(in_occurence.charAt(0) == in_string.charAt(i))

或者,只需声明in_occurrencechar类型:

char in_occurence = input.nextLine().charAt(0);
于 2013-10-08T16:46:41.083 回答
1

即使字符串包含该字符,您也将 aString与永远不相等的 a 进行比较。char

你想要的是

if (in_occurance.charAt(0) == in_string.charAt(i)) // compare char
于 2013-10-08T16:46:14.037 回答