2015-04-04 3 views
0

Я начинающий программист, и я создал метод, который вводит пользовательский ввод в строку, проверяет, является ли он целым или символом, преобразует его и затем передает его на следующую часть метода который является для каждого цикла, который проверяет значения id экземпляров объекта Person, хранящихся в связанном списке.Для каждой бесконечной петли

Однако он создает бесконечный цикл, и я не знаю, как его сломать так, что он выводит только один раз. Любая помощь очень ценится.

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

public void theSiv() { 
     System.out.println("Please enter client Id:"); 
     String s = In.nextLine(); 
     boolean isValidInteger = false; 
     char choice = 'p'; 
     boolean exists = false; 
     int searchid = 0; 
     try 
     { 
      int i = Integer.parseInt(s); 
      isValidInteger = true; 
      searchid = i; 
     } 
     catch (NumberFormatException ex) 
     { 
      choice = s.charAt(0); 
     } 

     while (choice !='x'){ 
      for (Person b:clients) 
       if (b.getId() == searchid){ 
        exists = true; 
        System.out.println("found client");} 

      if(exists == false) 
       System.out.println(" No such client"); 
     } 

    } 
+1

Btw, вы должны использовать '{' и ''}, чтобы определить, лучше ваши области. Например, ваш «найденный клиент» всегда будет отображаться. –

ответ

2

Бесконечный цикл ваш while (choice !='x'){, потому что ничего не изменяет choice в теле вашего while цикла. Если я правильно понимаю ваш код, то вы могли бы изменить к if как

if (choice != 'x') { 
Смежные вопросы