2017-09-05 159 views
0

我想完成从一个在线Java教程的任务,我目前在关于While循环的问题。这是我的代码:while循环在Java结束条件

import java.util.Scanner; 

public class bird { 
    public static void main(String[] args){ 
     Scanner bucky = new Scanner(System.in); 
     final String end = "END"; 
     String bird; 
     int amount; 

     System.out.println("What bird did you see in your garden? "); 
     bird = bucky.nextLine(); 

     while(!(bird.equals(end))){ 
      System.out.println("How many were in your garden? "); 
      amount = bucky.nextInt(); 

     } 
    } 
} 

我的问题是代码意味着如果最终是由用户,因此需要在While循环外部输入的终止。但是如果没有它在循环内部,它不会重复提出更多类型鸟类的问题。是否有办法在循环中获得第一个“你看到的是什么鸟?”,同时如果满足结束条件,还有退出循环的条件?

+0

你可能会寻找DO-同时,参见[_The而和do-while Statements_ tutorial](https://docs.oracle.com/javase/tutorial/java/nutsandbolts/while.html);虽然这也有你的具体用途问题。 –

+0

此代码在逻辑上存在缺陷。 –

+0

这是关于扫描仪[见这里](https://stackoverflow.com/questions/13102045/scanner-is-skipping-nextline-after-using-next-nextint-or-other-nextfoo?noredirect=1&lq=1) – Pmanglani

回答

0

一种方式做到这一点(见代码注释):

public static void main(String[] args){ 
    Scanner bucky = new Scanner(System.in); 
    final String end = "END"; 
    String bird; 
    int amount; 

    while(true){ // loop "forever" 
     System.out.println("What bird did you see in your garden? "); 
     bird = bucky.nextLine(); 
     if (end.equals(bird)) { // break out if END is entered 
      break; 
     } 

     System.out.println("How many were in your garden? "); 
     amount = bucky.nextInt(); 
     bucky.nextLine(); // consume the newline character after the number 

     System.out.println("we saw " + amount + " of " + bird); // for debugging 
    } 
} 
0

试试这个快速解决方案:

import java.util.Scanner; 

public class Bird { 
    public static void main(String[] args){ 

     Scanner bucky = new Scanner(System.in); 
     System.out.println("What bird did you see in your garden? "); 

     while(!(bucky.nextLine().equalsIgnoreCase("END"))){ 
      System.out.println("How many were in your garden? "); 
      bucky.nextInt(); 
      System.out.println("What bird did you see in your garden? "); 
      bucky.nextLine(); 
     } 
    } 
}