我需要帮助确保用户输入是一个整数且大于0

时间:2014-05-22 03:12:42

标签: java java.util.scanner

我一直试图让这一点正确,但似乎有些事情没有成功,因为代码一直在接受无效的值。

package main;

import java.util.Scanner;


import tabla.TablaDeVerdad;

public class Main {

    public static void main(String[] args) {
        Scanner entrada = new Scanner(System.in);
        int inicializador = 1;
        int contador = 1;
        TablaDeVerdad tabla;

        while(inicializador == 1){
            System.out.println("Escoja un número de variables mayor que cero:");
            int input;
            while(!entrada.hasNextInt() || entrada.nextInt() <= 0){
                System.out.println("Error, use un numero que sea mayor que cero:");
                entrada.next();
            }
            input = entrada.nextInt();
            tabla = new TablaDeVerdad(input);
            System.out.println(tabla.getCantidadDeNúmeros());
            inicializador = 0;

        }
    }

}

我的问题在于这些方面:

System.out.println("Escoja un número de variables mayor que cero:");
        int input;
        while(!entrada.hasNextInt() || entrada.nextInt() <= 0){
            System.out.println("Error, use un numero que sea mayor que cero:");
            entrada.next();
        }
        input = entrada.nextInt();
        tabla = new TablaDeVerdad(

每当我运行它时,请将此作为输出: Escojaunnúmerodevariables mayor que cero: 0 错误,使用un numero que sea mayor que cero: 0 0 错误,使用un numero que sea mayor que cero: 0 0 错误,使用un numero que sea mayor que cero: 1 1 1 3

如果输入为零,则总是应该给出错误消息,并且也不应该要求将多于0的数字用作输入多次。

1 个答案:

答案 0 :(得分:1)

我不懂西班牙语,但这是确保用户输入整数且大于0

的方式之一
....
int input; 
String inputStr = entrada.nextLine();

while(inputStr.replaceAll("\\D","").length() != inputStr.length() || Integer.parseInt(inputStr) <= 0){
    System.out.println("Error, use un numero que sea mayor que cero:");
    inputStr= entrada.nextLine();
}
input = Integer.parseInt(inputStr);
....