2014-11-25 5 views
0

Итак, я работаю над заданием домашней работы для java. Вот задание: Напишите метод, который определяет количество вхождений заданного символа в строке, используя следующий заголовок: публичного статического счетчик Int (строку Строки, символ а)Подсчитайте количество вхождений

Написать тестовую программу, которая запрашивает у пользователь вводит строку, за которой следует символ, и отображает количество вхождений символа в строке.

Ошибка в моем коде - это строка: char a = input.nextChar; он говорит: «nextChar не может быть разрешен или не поле»

Вот мой код:

import java.util.*; 

public class CountOccurances { 

    public static void main(String[] args) { 
     // TODO Auto-generated method stub 
     Scanner input = new Scanner (System.in); 
     System.out.println("Enter a string: "); 
     String str = input.nextLine(); 

     System.out.println("Enter a character: "); 
     char a = input.nextChar; 
     int letterCheck = count(str, a); 

     System.out.println("The character " + a + "appeared" + letterCheck + "times in" + str); 
    } 

    public static int count(String str, char a) 
    { 
     int count = 0; 
     for (int i = 0; i < str.length(); i++) 
     { 
      if (str.charAt(i) == a) 
      { 
       count++; 
      } 
     } 
     return count; 
    } 
} 
+0

Любая помощь была бы принята с благодарностью! Заранее спасибо! – Tammy

+2

[This] (http://stackoverflow.com/questions/13942701/take-a-char-input-from-the-scanner) может представлять интерес – Reimeus

ответ

2
char a = input.nextChar; 

Вы пытаетесь вызвать метод в приведенной выше строке, а не способ вызова метода. Метод должен называться так:

char a = input.nextChar(); 

Но Scanner класс не имеет метода nextChar(). Поэтому вы можете использовать Scanner.nextLine(), чтобы прочитать строку и получить первый символ строки, как показано ниже.

System.out.println("Enter a character:"); 
char a = input.nextLine().toCharArray()[0]; 

Здесь input.nextLine() читает строку т.е. String.

toCharArray() преобразует String в массив символов. Например:

Учитывайте, что строка чтения "HAI" будет преобразована в {'H', 'A', 'I'}.

input.nextLine().toCharArray()[0] получит первый индекс этого массива символов. В примере это будет «H». Но в вашем случае массив будет иметь только один элемент, когда вы читаете символы.

+0

СПАСИБО СОООООООООООООООО! Теперь он отлично работает! – Tammy

4
char a = input.nextChar; 

должен быть

char a = input.nextChar(); 

В первом случае говорят, что input имеет статическую переменную под названием nextChar, которая не является тем, что вы хотите. Вы пытаетесь вызвать метод на объекте input, который вы делаете, добавив () в конец.

Это считается даже это не будет работать, потому что класс Scanner не имеет этого метода в первую очередь. То, что вы хотите сделать что-то вроде этого

System.out.println("Enter a string: ");    //Prompt for string 
String str = input.nextLine();      //Get the string 
System.out.println("Enter a character: ");   //Prompt for char 
String userInput = input.nextLine();    //Get the char AS A STRING 
int letterCheck = count(str, userInput.charAt(0)); //Call your method with the first 
                //char entered 

Когда пользователь вводит символ для подсчета, вам нужно будет получить, что вход с nextLine() метода, который возвращает String. Затем вы можете вызвать свой метод, передав первый символ этой строки в качестве второго параметра.

+0

'Сканер' не имеет метода' nextChar() '. – ajb

2

Возможно, вы хотели сказать input.nextChar(), так как вы пытались вызвать метод. Но это не поможет, потому что Scanner не имеет метода nextChar().

То, что вы, вероятно, нужно сделать, это:

String inputLine = input.nextLine(); 
char a = inputLine.charAt(0); 

который вводит всю строку от пользователя, а затем устанавливает a на первый символ из строки ввода. (Это также будет сгенерировано исключение, если пользователь нажимает Enter без ввода символа;. charAt будет бросать исключение, если нет символа, чтобы вернуться, чтобы быть действительно безопасными, вы хотите что-то вроде этого :)

char a; 
while (true) { 
    String inputLine = input.nextLine(); 
    if (inputLine.length() > 0) { 
     a = inputLine.charAt(0); 
     break; 
    } else { 
     System.out.println("Your input string is empty"); 
    } 
} 
+1

Я не думаю, что 'String' имеет метод' getChar() '(от вашего первого фрагмента кода). Кроме того, ваш второй фрагмент показывает, что вы используете 'getChar()' на объекте Scanner 'input', который также не имеет этого метода. – csmckelvey

+0

Упс. Исправлена. Спасибо, что указали на ошибки. – ajb

+0

У тебя была спина, я получил твою. – csmckelvey

Смежные вопросы