2010-03-26 2 views
1

здесь исходный код:Как изменить этот метод, чтобы получить строки вместо Интс

public static int getInt() 
{ 
    Scanner in = new Scanner (System.in) ; 
    if (in.hasNextInt()) 
    { 
     int a = in.nextInt() ; 
     return a ; 
    } 
    else 
    { 
    System.out.println ("try again:") ; 
    return getInt() ; 
    } 
} 

Это проверяет и видит, если вход он получает это внутр. Если это так, он возвращает int, если не говорит, что вы попробуете снова и снова запустите.

Это то, что я пытался сделать, чтобы изменить его:

public static String getIns() 
    { 
     Scanner in = new Scanner (System.in) ; 
     if (in.hasNextString()) 
     { 
      String a = in.nextString() ; 
      return a ; 
     } 
     else 
     { 
     System.out.println ("try again:") ; 
     return getIns() ; 
     } 
    } 

Это не работает, хотя. Я просмотрел документацию для класса сканера, и я думаю, что проблема заключается в том, что нет такого метода, как in.hasNextString или in.nextString Какие методы из класса сканера я могу использовать для выполнения своих задач?

ответ

1

Использование Scanner.hasNext():

public boolean hasNext()
Возвращает TRUE, если этот сканер имеет другой маркер в его входе. Этот метод может блокироваться, ожидая ввода для сканирования. Сканер не продвигается мимо какого-либо входа.

+0

Я хочу, чтобы он удостоверился, что токен - это строка. hasNext() просто проверяет, что там что-то есть. – David

+2

Проблема в том, что любой токен, который он мог бы иметь, это String. Вы заметите, что все методы hasNextX() соответствуют примитивным типам. Это потому, что класс Scanner может определить, может ли следующий токен быть превращен в X. Все можно превратить в String, поэтому hasNext() будет эквивалентом hasNextString(). –

4

Вы должны прочитать documentation.

Вы ищете next и hasNext.

+0

+1 для меня быстрее. –

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