2014-09-10 4 views
0

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

Там нет ошибки в коде, и она работает правильно, но почему это печать дважды вместо одного раза ?

public void mainloop() { 
    for (int i = 0; i < 100; i++) { 

     String x; 

     System.out.println("Please Select your option"); 
     System.out.println("............................"); 
     System.out.println("1 ADD NAME AND NUMBER \n2 REMOVE NAME AND NUMBER \n3 SEARCH NAME AND NUMBER \n0 EXIT"); 
     System.out.println("............................"); 

     x = input.nextLine(); 

     if (x.equalsIgnoreCase("0")) { 
      System.out.println("Thank you!"); 
      break; 
     } 
     if (x.equalsIgnoreCase("1")) { 
      String Name; 
      String Number; 

      System.out.println("Please Enter your Name below"); 
      Name = input.nextLine(); 
      System.out.println("Please Enter your Number below"); 
      Number = input.nextLine(); 
      System.out.println(""); 
      System.out.println("Your Name " + Name + " and Number " + Number + " has been saved!\n"); 

      objectclass objectclassObject = new objectclass(Name, Number); 
      Test.add(objectclassObject); 
     } 
     if (x.equalsIgnoreCase("2")) { 

      System.out.println("-------ALL NAME AND NUMBERS-------"); 
      System.out.println(""); 

      for (int j = 0; j < Test.size();) { 
       objectclass p = Test.get(j++); 
       System.out.println(j + ". Name: " + p.getName() + " - " + p.getNumber()); 
      } 
      for (int j = 0; j < Test.size(); j++) { 
       System.out.println(""); 
       System.out.println("Enter Index number to remove Contact from Phonebook!"); 
       int v = input.nextInt(); 
       int temp = (v - 1); 
       if (v >= 1 && v <= Test.size()) { 
        System.out.println("Name: " + Test.get(temp).getName() + " And Number: " + Test.get(temp).getNumber() + " has been removed!!"); 
        System.out.println(""); 
        Test.remove(temp); 
       } else { 
        System.out.println("Please enter number properly!!"); 
       } 
       break; 
      } 
     } 
     if (x.equalsIgnoreCase("3")) { 
      String y; 
      System.out.println("*** Enter your Name below for search ***"); 
      y = input.nextLine(); 

      for (objectclass p : Test) { 
       String z = p.getName(); 
       if (z.equalsIgnoreCase(y)) { 
        System.out.println("Your Name is: " + p.getName() + "\nYour Number is: " + p.getNumber()); 
        System.out.println(""); 
       } 
       if (!z.equalsIgnoreCase(y)) { 
        System.out.println("Contact not found!!!"); 
       } 
      } 
     } 
    } 
} 

}

System.out.println("Please Select your option"); 
System.out.println("............................"); 
System.out.println("1 ADD NAME AND NUMBER \n2 REMOVE NAME AND NUMBER \n3 SEARCH NAME AND NUMBER \n0 EXIT"); 
System.out.println("............................"); 

это печатает дважды:/~

+0

Во-первых, измените, если для переключения операторов делает его читаемым в вашем случае. – StackFlowed

+0

Я новичок в java ... изучая вещи 1 by 1: P – jtfkyo

ответ

1

Если это печатает дважды, вы прошли 2 раза через петлю. Попробуйте отобразить переменную «x» после прочтения. Уверен, у вас есть лишние пустые строки между вашим законным входом.

Что произойдет, так как nextInt() не использует новую строку. Поэтому в следующий раз, когда вы читаете x, вы читаете конец строки после значения v.

+0

как я могу ее исправить? – jtfkyo

+0

Следуйте за свой input.nextInt() с помощью input.nextLine(). –

1

Как упомянуто @Aeshang, пожалуйста, используйте переключатель вместо если. Во-вторых

if (x.equalsIgnoreCase("2")) { 

блок не закончится до

if (x.equalsIgnoreCase("3")) { 

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

+0

Я не думаю, что моя часть удаления включает в себя поисковую часть: s – jtfkyo

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