2016-04-27 1 views
2

Я не знаю, как написать код «следующего исходного символа», чтобы найти следующий символ строки.Как я могу взять следующий символ в сканере анализатора в Java

public class scanner { 
    protected char currentChar; 
    protected StringBuffer currentSpelling; 
    protected byte currentKind; 

    private void take (char expectedChar){ 
     if (currentChar == expectedChar){ 
      currentSpelling.append(currentChar); 
      currentChar = next source character; 
     } 
    } 


    private void takeIt(){ 
     currentSpelling.append(currentChar); 
     currentChar = next source character; 
    } 

} 
+0

Используйте для петли. Используйте индекс для метода * String * .charAt() и там вы идете. – Seth

ответ

1

Возможно, вам необходимо определить источник символов. Здесь я передал его конструктору Сканера.

public class Scanner { 
    protected char currentChar; 
    protected StringBuffer currentSpelling; 
    protected byte currentKind; 
    private Reader inputStreamReader; 

    public Scanner(InputStream inputStream) { 
     reader = new InputStreamReader(inputStream); 
    } 

    private void take (char expectedChar){ 
     if (currentChar == expectedChar){ 
      currentSpelling.append(currentChar); 
      currentChar = (char) inputStreamReader.read(); 
     } 
    } 


    // Note. Probably you need to get the currentChar before append it. 
    // So the order of operations should be inverted 
    private void takeIt(){ 
     currentSpelling.append(currentChar); 
     currentChar = (char) inputStreamReader.read(); 
    } 

} 

Чтобы создать его, вы можете сделать что-то подобное (или вы можете заменить его для чтения данных из другого потока, например, файл):

Scanner myScanner = new Scanner(System.in); 

Примечание: Я изменил название класс от scanner до Scanner, потому что это хорошая практика иметь класс «Капитализированный».

+0

И конструктор, который считывает первое значение 'currentChar'. И некоторый тест конца файла. Ницца. –

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