Java 仅限整数?

Java 仅限整数?,java,integer,Java,Integer,如何将输入限制为仅整数、无双精度等?有经验的人回答的简单问题。如果输入不是double,则显示错误消息,并能够再次输入 import java.util.Scanner; public static void main(String[] args) { Scanner reader = new Scanner(System.in); int years; int minutes; System.out.println("Years to Minutes

如何将输入限制为仅整数、无双精度等?有经验的人回答的简单问题。如果输入不是double,则显示错误消息,并能够再次输入

import java.util.Scanner;


public static void main(String[] args) {

    Scanner reader =  new Scanner(System.in);
    int years;
    int minutes;

    System.out.println("Years to Minutes Converter");
    System.out.print("Insert number of years: ");
    years = reader.nextInt();

    minutes = years * 525600;


    System.out.print("That is ");
    System.out.print(minutes);
    System.out.print(" in minutes.");

    }
 }
使用

如果可以使用nextInt方法将此扫描仪输入中的下一个标记解释为默认基数中的int值,则返回true。扫描仪不会超过任何输入

示例代码:

Scanner sc = new Scanner(System.in);
System.out.print("Enter number 1: ");

while (!sc.hasNextInt()) 
    sc.next();

int num1 = sc.nextInt();
int num2;

System.out.print("Enter number 2: ");

do {
    while (!sc.hasNextInt()) 
        sc.next();
    num2 = sc.nextInt();
} while (num2 < num1);

System.out.println(num1 + " " + num2);
您不必解析int或担心NumberFormatException。请注意,由于hasNextXXX方法不会超过任何输入,因此如果要跳过垃圾,可能必须调用next,如上所示。

确定我这样做:

package reader;

import java.util.Scanner;

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

        Scanner reader = new Scanner(System. in );
        int years;
        int minutes;
        String data = null;

        System.out.println("Years to Minutes Converter");
        boolean test = false;

        while (test == false) {
            System.out.print("Insert number of years: ");
            String regex = "\\d+";
            data = reader.next();
            test = data.matches(regex);
            if (test == false) {
                System.out.println("There is a problem try again");
            }
        }
        years = Integer.valueOf(data);

        minutes = years * 525600;

        System.out.print("That is ");
        System.out.print(minutes);
        System.out.print(" in minutes.");

    }

}
它会说:

Years to Minutes Converter
插入年数:dsds 出现问题,请重试 插入年数:。。 出现问题,请重试 插入年份:2
这是1051200分钟。

你不能限制它。只有在事实上,java命令行支持才是非常有限的,如果您真的需要这种功能,您可以考虑查看已被编辑的诅咒APIE标签的各种绑定,但将来参考:java和javascript是无关的,所以你不应该将问题标记为javascript,除非它们实际上涉及到该语言。谢谢,但是你能解释一下你对字符串data=null做了什么以及为什么创建了布尔值吗?嗨,字符串data=null被用作变量来获取用户写的内容,我使用它是因为他可以写任何东西,如果我使用nextInt,我会有一个运行时错误,因为我只需要数字,我使用正则表达式比较他写的内容,如果不是数字,布尔值表示false,那么while将一直运行到他写数字: