循环不按照我打算的方式工作

时间:2018-02-15 21:12:39

标签: java

所以,说实话,这应该是一个非常简单的循环。为了澄清,这就是我希望它的工作方式。我问用户“请输入要验证的ISBN号”。用户输入号码后,会询问“你想输入另一个号码吗?”如果用户输入“是”,则会再次提示用户输入另一个号码。 “请输入一个ISBN号进行验证”这将继续,直到用户输入“否”。希望这是有道理的,这是我到目前为止所做的:

System.out.println("Press 1 to enter a list of ISBN numbers to verify. ");
System.out.println("Press 2 to convert an ISBN-10 number to an ISBN-13 number. ");
System.out.println("Press 3 to quit. ");
choice = input.nextInt();

if(choice == 1){

     do{
        //Get the ISBN
        System.out.println("Please Enter an ISBN number with dashes to verify. ");
        isbns.add(input.nextLine());
        //loops till answer is yes or no
        while(isbns.add(input.nextLine()))
            System.out.println("Would you like to add another ISBN?");
        ans = input.nextLine();
        if(ans.equalsIgnoreCase("N"))
            break;
    }while(!(ans.equalsIgnoreCase("N")));
    input.close();

当我输入是或否时,我现在所拥有的往往是什么都不做。

2 个答案:

答案 0 :(得分:0)

对于一个非常简单的问题,你做了一个非常复杂的解决方案。为什么不使用简单的while循环?

System.out.println("Press 1 to enter a list of ISBN numbers to verify. ");
System.out.println("Press 2 to convert an ISBN-10 number to an ISBN-13 number. ");
System.out.println("Press 3 to quit. ");
choice = input.nextInt();

//A token to keep track of user's choice to continue the program
String userChoise = "Y";

if(choice == 1){
  while(userChoise.equalsIgnoreCase("Y")) {
    //Get the ISBN
    System.out.println("Please Enter an ISBN number with dashes to verify. ");
    isbns.add(input.nextLine());
    System.out.println("Would you like to add another ISBN?");
    userChoise = input.nextLine();
  }
  input.close();
}

答案 1 :(得分:0)

只是对@Ratul Bin Tazul回答的一个小修改。我确实支持使用do while循环,因为从案例中可以清楚地看到,至少需要在循环内执行代码。

您需要注意的另一件事是在调用nextInt()之后使用nextLine()。这是因为nextInt并没有消费' \ n'在上一次输入结束时,这就是为什么你同时打印两行的原因。

Scanner input = new Scanner(System.in);
System.out.println("Press 1 to enter a list of ISBN numbers to verify. ");
System.out.println("Press 2 to convert an ISBN-10 number to an ISBN-13 number. ");
System.out.println("Press 3 to quit. ");

choice = input.nextInt();
input.nextLine();

//A token to keep track of user's choice to continue the program
String userAnswer;

if(choice == 1){
  do {
    //Get the ISBN
    System.out.println("Please Enter an ISBN number with dashes to verify. ");
    isbns.add(input.nextLine());
    System.out.println("Would you like to add another ISBN?");
    userAnswer = input.nextLine();
  }while( !userAnswer.equalsIgnoreCase("N"));
  input.close();
}