如何设置循环

eivgtgni  于 2021-07-03  发布在  Java
关注(0)|答案(2)|浏览(235)

我还是java新手,我想为int year设置while循环,比如year不等于任何输入字符串。我该怎么办?
这是我的密码:

int year = input.nextInt();

while (year < 1400 || year > 2600) {
    System.out.println("Invalid year, please enter again: ");
    year = input.nextInt();
}

u91tlkcl

u91tlkcl1#

最好的方法是使用异常处理。另外,使用nextline()方法扫描输入,并使用integer.parseint()方法解析输入。
使用字符串无效时抛出的适当异常(在本例中为numberformatexception)。
请看以下代码:

import java.util.Scanner;

class Solution{

    public static void main(String[] args){

        Scanner input = new Scanner(System.in); 

        int yearInValidIntergerForm;

        while (true) {

            String year = input.nextLine();
            try{

                yearInValidIntergerForm = Integer.parseInt(year);

                if(yearInValidIntergerForm<1400 || yearInValidIntergerForm>2600){
                    //Custom exception - this is optional. As an alternative, you can just print invalid message instead of throwing exception.

                    throw new Exception("Invalid range for input year.");
                }

                System.out.println("Success"); 

                break;

            }catch(NumberFormatException e){

                System.out.println("Input is not a valid integer.");    

            }catch(Exception e){

                System.out.println(e.getMessage());    
            }
        }
    }
}

输入:

bgsd
3400
1500

输出:

Input is not a valid integer.
Invalid range for input year.
Success
vxbzzdmp

vxbzzdmp2#

用户输入应该与int输入类型匹配。使用try-catch块可以避免在输入字符串输入时出现异常。

try{
    while (year < 1400 || year > 2600) {
      System.out.println("Invalid year, please enter again: ");
      year = input.nextInt();
    }
}
catch(Exception e){
    e.printStackTrace();
}

相关问题