Member 13894169 Ответов: 1

Несравнимые типы: char и string


import java.util.*;
import java.lang.*;
public class MyClass {
  public static void main(String args[]) {
    Scanner in = new Scanner(System.in);
    int count = 0;
    String inputEntry = in .nextLine();
    String inputCharacter = in .nextLine();
    if (inputCharacter.length() != 1) {
      System.out.println("Please enter single character");
System.exit(0);

    } else {
      for (int i = 0; i < inputEntry.length(); i++) {
        if (inputEntry.charAt(i) == inputCharacter) {
          count++;
        }
      }
      System.out.println("There is " + count + " occurence(s) of '" + inputCharacter + "' in " + inputEntry);
    }
  }
}


Что я уже пробовал:

отладьте ошибку, пожалуйста. он показывает ошибку в строке, если (inputEntry.используя метод charat(я) == inputCharacter) я не понимаю, как отлаживать это.

0x01AA

inputCharacter имеет тип string
While inputEntry.charAt(i) возвращает символ

if (inputEntry.charAt(i) == inputCharacter.charAt(0)) это решит проблему.

Afzaal Ahmad Zeeshan

Виртуальный 5. :-)

Peter_in_2780

Разместите его как решение.

1 Ответов

Рейтинг:
2

Error410

Быстрая версия будет выглядеть следующим образом:

if (inputEntry.charAt(i) == inputCharacter.charAt(0)) {
	          count++;
	        }


Что происходит, так это то, что вы объявили inputCharacter как строковый объект, поэтому, очевидно, на самом деле это не char или char[].
Лучшей версией для вашего маленького фрагмента кода будет (так как ваш маленький символ всегда будет иметь размер одной единицы):

int countz = StringUtils.countMatches(inputEntry, inputCharacter);


Это также позволяет проводить фактические сравнения подстрок. Если вы действительно уверены, что хотите, чтобы в вашей строке был учтен только один символ, просто используйте что-то вроде этого:

int countz = StringUtils.countMatches(inputEntry, inputCharacter.charAt(0));