Java 如何循环此语句直到用户进入2012年?

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

我一直在尝试循环,直到用户输入2012,但是我不知道如何执行while(year!=2012&&year1!=2012)之类的操作。我只是不知道当“year”不在while循环中时如何执行此操作。

您不需要创建新的扫描程序和新的变量,您可以重用

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);
}