我一直在尝试解决这一问题,似乎有些事情无法解决,因为代码不断接受无效值。

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(


每当我运行它时,它都会给出以下输出:
Escoja unnúmerode variable市长que cero:
0
错误,请使用un numero que海市长que cero:
0
0
错误,请使用un numero que海市长que cero:
0
0
错误,请使用un numero que海市长que cero:
1个
1个
1个
3

当总是假定输入为零时给出错误消息,并且也不应要求将大于0的数字用作输入多次时。

最佳答案

我不懂西班牙语,但这是确保用户输入为整数且大于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);
....

10-06 11:24