2013-03-25 3 views
1

String userAge;break; line unreachable

while(true){ 
     System.out.println("Enter user Age"); 
     userAge = scInput.nextLine(); 
      if(tryParseInt(userAge)){ 
      return userInfo[row][1] = userAge; 
      break; 
      }else{ 
       System.out.println("Please Enter an integer."); 
       } 
    } 

Начинающий здесь, имя Рейган.

Моя проблема заключается в том, что мой код не компилируется из-за «break;». В нем говорится, что это недостижимый код. Я чувствую, что делаю что-то неправильно здесь, и я почти уверен, что это связано с типом переменной. Не уверен, как это сделать. Это метод, который требует возраста пользователей.

Моя цель - передать строку через мой метод tryParseInt() для проверки и убедиться, что входные данные являются целыми числами, но сохраняйте их как переменную типа строки.

Я создаю многомерный массив String для хранения данных пользователя. То есть Имя; возраст; место нахождения.

ответ

10

break заявление после заявления return является недостижимым, поскольку функция завершается до break. Удалите break; и ваш код должен скомпилировать.

+0

Я удалил перерыв. Выполняется код, однако он проходит через весь цикл перед тестированием моего состояния. В идеале я хотел бы, чтобы он отображал оператор else, если мое условие ложно. –

+0

Если вы хотите снова заколечить свои условия, не используйте инструкцию return или break в цикле. И когда в следующий раз программа запрашивает ввод, введите несколько символов, и вы должны увидеть, что выполняется условие else. Но помните, что удаление break или return в этом while-loop делает его бесконечным циклом! –

0
while(true){ 
     System.out.println("Enter user Age"); 
     userAge = scInput.nextLine(); 
      if(tryParseInt(userAge)){ 
      return userInfo[row][1] = userAge; 
      //you don't need break here because return at above line will make function to exit - break the loop 
      //break; 
      }else{ 
       System.out.println("Please Enter an integer."); 
       } 
    } 
0

судить Ввод является ли целое число:

Scanner scanner = new Scanner(System.in); 
try { 
    userInfo[row][1] = scanner.nextInt()); 
    return; 
} catch (InputMismatchException e) { 
    System.out.println("Please enter a integer."); 
} 
finally{ 
    scanner.close(); 
} 

и в вашем коде, ломают предложение после возвращения предложения, так что это не достижим.