1

我在这段代码中遇到的问题如下:变量号不能是字符串,所以我尝试使用 try, catch (InputMissmatchException) 语句来解决这个问题。但是,当 in 进入循环并且有人输入一个字符串时,异常是句柄,但它使用最后一个有效条目再次通过循环。即我输入5,然后我输入“你好”,结果是:“你必须输入一个数字。” 但现在又计算了 5 个。

这使得计数器向 count 变量加一太多。如果用户继续使用字符串,则循环会一遍又一遍地添加最后一个有效条目,因此最后计数会出错。

从逻辑上讲,我希望程序处理该问题并要求用户输入正确的条目,直到输入可接受的整数,而无需再次通过 while 循环;并且当用户输入有效条目时,保持循环或存在(-1)。

int number = 0;
int[] count = new int[11];

    try
        {
        number = input.nextInt(); 
        } 
        catch (InputMismatchException y)
        {
        System.out.println("You must enter a number.");
        input.nextLine();

        }    


    while (number != -1)
    {
        try 
        {
            ++count[number];
        } 
        catch (IndexOutOfBoundsException e) 
        {
            System.out.println("Please enter a valid number from the menu.");
        }

        try
        {
        number = input.nextInt();
        } 
        catch (InputMismatchException y)
        {
        System.out.println("You must enter a number.");
        input.nextLine();

        } 
    }
4

1 回答 1

1

听起来你想要一个while循环,直到他们输入一个数字

int number = 0;
int[] count = new int[11];

while(true) {
    try
    {
    number = input.nextInt();
    break;
    } 
    catch (InputMismatchException y)
    {
    System.out.println("You must enter a number.");
    input.nextLine();

    }  
}  


while (number != -1)
{
    try 
    {
        ++count[number];
    } 
    catch (IndexOutOfBoundsException e) 
    {
        System.out.println("Please enter a valid number from the menu.");
    }

    while(true) {
        try
        {
            number = input.nextInt();
            break;
        } 
        catch (InputMismatchException y)
        {
            System.out.println("You must enter a number.");
            input.nextLine();
        } 
    }

}
于 2015-04-30T00:00:55.020 回答