Java 如何循环此语句直到用户进入2012年?
我一直在尝试循环,直到用户输入2012,但是我不知道如何执行while(year!=2012&&year1!=2012)之类的操作。我只是不知道当“year”不在while循环中时如何执行此操作。您不需要创建新的扫描程序和新的变量,您可以重用Java 如何循环此语句直到用户进入2012年?,java,Java,我一直在尝试循环,直到用户输入2012,但是我不知道如何执行while(year!=2012&&year1!=2012)之类的操作。我只是不知道当“year”不在while循环中时如何执行此操作。您不需要创建新的扫描程序和新的变量,您可以重用 import java.util.Scanner; public class whileLoopOlympics { public static void main (String[] args) { System.out.println ("Wh
import java.util.Scanner;
public class whileLoopOlympics
{
public static void main (String[] args)
{
System.out.println ("Which year was the most recent London Olympics?");
Scanner scanner = new Scanner(System.in);
String yearAsString = scanner.nextLine();
int year = Integer.parseInt(yearAsString);
while (year!=2012)
{
System.out.println ("Which year was the most recent London Olympics?");
Scanner next = new Scanner(System.in);
String yearAsString2 = scanner.nextLine();
int year1 = Integer.parseInt(yearAsString2);
}
}
}
我会把它改成一个
do/while
import java.util.Scanner;
public class whileLoopOlympics
{
public static void main (String[] args)
{
Scanner scanner = new Scanner(System.in);
int year = 0;
while (year!=2012)
{
System.out.println ("Which year was the most recent London Olympics?");
String yearAsString = scanner.nextLine();
year = Integer.parseInt(yearAsString);
}
}
}
试着用我自己的想法来总结我在评论中看到的一些想法: 你应该尽量不要经常重复你的代码。您不必使用这么多变量和扫描器(您甚至声明了一些您从未使用过的变量和扫描器)
对于
year
和year1
,不要执行两次此操作。只需执行循环即可将输入读入年份
。在循环之前,将year
初始化为null
。然后在year!=2012
。您可以将while(…)
循环切换到do{…}while(…)
使用break语句!!!如下所示:-while(true){read input;如果input==2012,则break;}
为什么要声明一个新变量year1
?只需将新值指定给year
。如果用户输入的内容不是int,只需saying@ochi-OP发布的代码也有同样的问题。这个答案并没有把它作为一个bug引入,它只是解决了被问到的问题。如果用户输入的不是int,你会得到一个NumberFormatException,只是说我没有投反对票,但这个循环将在我们得到2012 also1时执行。你没有明确说明问题是什么;相反,您只是在代码中修复了它;2.你建议了一种完全不必要的不同方法。@mre完全不必要吗?请解释-代码执行一次(至少一次),就像初始代码一样,解释即将到来,但OP已经选择了答案。。。IMHO,这是一个更好的方法,因为它减少了代码重复(因此需要重构)@Devavrata在所有情况下,代码至少需要提示一次,对吗?(从用户处获取输入)1。回答问题;2.如有必要,提供替代方法。基于意见的答案对我来说没有价值。这只是反馈,不是人身攻击。
public static void main (String[] args)
{
int year = -1;
do{
System.out.println ("Which year was the most recent London Olympics?");
Scanner scanner = new Scanner(System.in);
String yearAsString = scanner.nextLine();
try{
year = Integer.parseInt(yearAsString);
}catch (NumberFormatException nfe){
System.out.println ("Invalid year; numbers only please");
}
}while (year != 2012 );
System.out.println ("Correct! Thanks");
}
import java.util.Scanner;
public class whileLoopOlympics
{
public static void main (String[] args) {
int year = 0;
Scanner next = new Scanner(System.in);
while (year!=2012) {
System.out.println ("Which year was the most recent London Olympics?");
String yearAsString = scanner.nextLine();
year = Integer.parseInt(yearAsString2);
}
}
// Do not declare a new scanner for any line you read
Scanner scan = new Scanner(System.in);
// If you're as maniac as I am, you can use only ONE string as well (or even no String...)
String user_input;
int year = 0;
while (year != 2012)
{
System.out.println ("Which year was the most recent London Olympics?");
user_input = scan.nextLine();
year = Integer.parseInt(yearAsString2);
}