2014-09-10 78 views
0

我有一个问题,当我从删除部分打出来的代码打印主菜单选项两次打印2次唐诺为什么

有一个在代码中没有错误,它可以正常运行,但为什么它打印两次,而不是一次?

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 2014-09-10 15:52:43

+0

我是新来的java ...学习东西1 1:P – jtfkyo 2014-09-10 15:56:39

回答

1

如果这打印两次,你通过循环2次。尝试在阅读后显示变量'x'。我敢打赌,你的合法输入之间有额外的空串。

nextInt()不会消耗换行符。因此,当你下次读x时,你会看到数值后012行尾的值

+0

我该如何修复它? – jtfkyo 2014-09-10 16:19:31

+0

使用input.nextLine()跟随您的input.nextInt()。 – 2014-09-10 17:01:59

1

如前所述通过@Aeshang请使用交换机而不是如果。 其次

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

块没有结束之前

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

你删除的部分还包括搜索部分。不知道这是否会解决问题,但首先要纠正这些问题并检查你的答案。

+0

我不认为我的删除部分包含搜索部分:s – jtfkyo 2014-09-10 16:13:18