多个方法的问题和无限循环的发生

时间:2012-11-15 11:10:10

标签: java infinite-loop

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

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;
        }
    }
}

通过一种主要方法完成这个程序很容易通过这个很容易让我感到困惑。 。

2 个答案:

答案 0 :(得分:1)

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

//System.out.print(check);
while (validateNum() == false)
{
    System.out.print ("Non-positive numbers are not allowed.\n");
    count = getNum();
}

答案 1 :(得分: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();
}