2014-06-20 62 views
0

我一直有问题,让我的计划做什么,我需要做的内部声明。代码中没有语法错误。使用嵌套if和else if while语句

首先,我有我的程序设置为询问用户的名字和姓氏最多的3倍,用户应该能够提前结束输入,如果他们想。

有没有一种方法,我可以把是System.out.print(“你想添加一个新的域名(Y/N)”); if语句之外?因此,这将阻止我把后我的第三个名字,或者把2名和类型N.

任何帮助将不胜感激。

import java.util.Scanner; 

public class SOF { 


public static void main(String test[]){ 




    @SuppressWarnings("resource") 
    Scanner scanner = new Scanner (System.in); 

    System.out.print("Do you want to add a new name (Y/N)"); 
    String newname = scanner.next(); 

    int AddName = 0; 

    while (AddName < 3) { 


     if (newname.equalsIgnoreCase("y")) 
     { 


      System.out.println("Enter first name: "); 
      String fname = scanner.next(); 

      System.out.println("Enter last name: "); 
      String lname = scanner.next(); 

      AddName = AddName + 1; 

      System.out.print("Do you want to add a new name (Y/N)"); 
      String newnamee = scanner.next(); //had to add an extra e, since I had two varibles 
               // with the same time. This might be the issue. 
               //I'm unsure though 



     } 

     else if (newname.equalsIgnoreCase("n")) { 

      System.out.println("Goodbye"); 
      AddName = AddName + 3; 
     } 
    } 
} 

}

+0

使用相同的'newname'再加入'&& newname.equalsIgnoreCase( “Y”)'的同时测试。 – Holloway

回答

1

使用做,而不是:

public static void main(String test[]) { 

     @SuppressWarnings("resource") 
     Scanner scanner = new Scanner(System.in); 
     int AddName = 0; 

     do { 

      System.out.print("Do you want to add a new name (Y/N)"); 
      String newname = scanner.next(); 

      if (newname.equalsIgnoreCase("y")) { 

       System.out.println("Enter first name: "); 
       String fname = scanner.next(); 

       System.out.println("Enter last name: "); 
       String lname = scanner.next(); 

       AddName = AddName + 1; 

      } 

      else if (newname.equalsIgnoreCase("n")) { 

       System.out.println("Goodbye"); 
       AddName = AddName + 3; 
      } 

     } while (AddName < 3); 
    } 
+0

我试过这个,它工作。我今天学到了一些新东西,以前从未使用也没有尝试过。 你们真的很快就回应! – Rias

0

你的第二个变量是从未使用过:

String newnamee = scanner.next(); //<-- remove the declaration 

newname = scanner.next();//<-- try this instead 
+0

注意到并删除:) – Rias

2

你可以把System.out.print("Do you want to add a new name (Y/N)");在while循环的开始,像这样:

import java.util.Scanner; 

public class SOF { 
public static void main(String test[]){ 
@SuppressWarnings("resource") 
Scanner scanner = new Scanner (System.in); 
int AddName = 0; 

while (AddName < 3) { 
System.out.print("Do you want to add a new name (Y/N)"); 
String newname = scanner.next(); 

    if (newname.equalsIgnoreCase("y")) 
    { 
     System.out.println("Enter first name: "); 
     String fname = scanner.next(); 
     System.out.println("Enter last name: "); 
     String lname = scanner.next(); 
     AddName = AddName + 1;   

    } 

    else if (newname.equalsIgnoreCase("n")) { 
     System.out.println("Goodbye"); 
     AddName = AddName + 3; //alternatively you can use break statement. 
    } 
    } 
    } 
} 
+1

代替'AddName = AddName + 3;'或者你可以用'break'声明。 –

+0

啊好的,我会试试。谢谢:) – Rias