while循环在Java结束条件
问题描述:
我想完成从一个在线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循环外部输入的终止。但是如果没有它在循环内部,它不会重复提出更多类型鸟类的问题。是否有办法在循环中获得第一个“你看到的是什么鸟?”,同时如果满足结束条件,还有退出循环的条件?
答
一种方式做到这一点(见代码注释):
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
}
}
答
试试这个快速解决方案:
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();
}
}
}
你可能会寻找DO-同时,参见[_The而和do-while Statements_ tutorial](https://docs.oracle.com/javase/tutorial/java/nutsandbolts/while.html);虽然这也有你的具体用途问题。 –
此代码在逻辑上存在缺陷。 –
这是关于扫描仪[见这里](https://stackoverflow.com/questions/13102045/scanner-is-skipping-nextline-after-using-next-nextint-or-other-nextfoo?noredirect=1&lq=1) – Pmanglani