1

我正在编写一个程序,它需要除 main 之外的 5 个方法,每个方法都执行特定的操作,main 调用所有其他方法向用户输出有关错误输入的警告,第二种方法只是提取用户想要处理的变量数量的主要输入,第三种方法检查以确保用户的输入为非负数,并稍后检查所有用户输入以确保它也是非负数,第四种方法测试用户输入的数字,最后最后一种方法打印所有内容.. 到目前为止我没有做很好。我有程序要求用户输入,它工作正常,第二种方法应该检查并确保输入正确,我似乎无法工作,它要么循环说输入是正确的还是错误的。因为代码现在循环说输入不正确。

import java.util.Scanner;

public class tgore_perfect 
{
    private static int count;   
    public static void main ( String args [])
    {
        count = getNum ();
        boolean check = validateNum();
        while (check == false)
        {
            System.out.print ("Non-positive numbers are not allowed.\n");
            count = getNum();
        }
        if (check == true)
        {
            System.out.print("kk");
        }
    }

    public static int getNum () //gets amount of numbers to process
    {
    Scanner input = new Scanner ( System.in );
    int counter;

    System.out.println ("How many numbers would you like to test? ");
    counter = input.nextInt();
    return counter;
    }

    private static boolean validateNum() //checks user input
    { 
        if (count <= 0)
        {
            return false;
        }
        else
        {
            return true;
        }
    }
}

通过一种主要方法来完成这个程序很容易通过这么多方法来完成,这让我很困惑。. .

4

2 回答 2

1

您的问题是您没有第二次检查该值。尝试这个:

//System.out.print(check);
while (validateNum() == false)
{
    System.out.print ("Non-positive numbers are not allowed.\n");
    count = getNum();
}
于 2012-11-15T11:14:28.463 回答
0
boolean check = validateNum();
//System.out.print(check);
while (check == false)
{
    System.out.print ("Non-positive numbers are not allowed.\n");
    count = getNum();
    // reset check here 
}

您不是check在循环内重置,所以如果控制进入循环内,它将是无限循环。

解决方案之一可能是:

while ( ! validateNum())
{
    System.out.print ("Non-positive numbers are not allowed.\n");
    count = getNum();
}
于 2012-11-15T11:15:41.447 回答