我已经查看了我在这里可以找到的所有相关内容,但由于某些原因,没有任何帮助。每当我运行这个时,我总是得到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);
}
答案 0 :(得分:2)
您正在使用String
将char
与String#equals()
进行比较。这总是会给你false
。
例如:
System.out.println("a".equals('a')); // false
您应该通过在比较前获取索引0处的字符来将String
转换为char
:
if(in_occurence.charAt(0) == in_string.charAt(i))
或者,只需将in_occurrence
声明为char
类型:
char in_occurence = input.nextLine().charAt(0);
答案 1 :(得分:1)
您正在将String
与char
进行比较,即使字符串包含该字符,它也永远不会相等。
你想要的是
if (in_occurance.charAt(0) == in_string.charAt(i)) // compare char