如何解决变量不等于用户输入的问题

问题描述 投票:0回答:1

我的程序要求用户输入一个数字,然后验证这个数字是否在两个随机生成的数字的范围内或范围外。变量num应该是用户的猜测,但它一直等于0。我不确定这是否与main中的num=0有关,因为如果=0不在那里,我就会得到一个 "变量可能未被初始化 "的错误。

代码:我的程序要求用户输入一个变量,而这个变量在main中=0,因为如果=0不在那里,我就会收到 "变量可能没有被初始化 "的错误。

public static int getValidGuess(Scanner get)
    {
       int num;

        System.out.print("Guess a number: --> ");
        num = get.nextInt();

        return num;
    } // getValidGuess end

    public static boolean displayGuessResults(int start, int end, int num)
    {

      boolean result;

    Random gen = new Random();

    int n1 = gen.nextInt(99) + 1;
    int n2 = gen.nextInt(99) + 1;


    if (n1 < n2){
        start = n1;
        end = n2;
    } //if end
    else
    {
        start = n2;
        end = n1;
    } //else end
    System.out.println("\nThe 2 random numbers are " + start + " and " + end);
    System.out.println("User Guess is " + num);
    if(num >= start && num <= end){
        result = true;
        System.out.println("Good Guess!");
    }
    else if(num < start || num > end){
        result = false;
        System.out.println("Outside Range.");
    }
    else{
        result = false;
    }
    return result;

    } // displayGuessResults end

    public static void main(String[] args) {
        // start code here
       int start = 0, end = 0, num = 0;
       Scanner scan = new Scanner(System.in);
       String doAgain = "Yes";

        while (doAgain.equalsIgnoreCase("YES")) {
            // call method
            getValidGuess(scan); 
            displayGuessResults(start, end, num);
            System.out.print("\nEnter YES to repeat --> ");
            doAgain = scan.next();
        } //end while loop

    } //main end
java variables methods
1个回答
1
投票

不同函数中的变量并不会因为名字相同就神奇地相同。如果你想在不传递变量作为参数或返回值的情况下能够共享变量,那么你需要在类中声明它们,而不是。

具体来说,你有两个选择。选择1(推荐):改变 getValidGuess(scan);num = getValidGuess(scan);. 选择2:把 public static int num = 0; 在你的类中,在你的所有函数之外,并删除了 num 从你所有的功能。

© www.soinside.com 2019 - 2024. All rights reserved.