多次引用方法时保持变量

时间:2018-12-12 17:12:55

标签: java string random methods return

我需要用它来随机打印“ N1”和“ N2”。我的问题是我不知道如何保留值(num和num2),因此不会两次打印相同的数字。我不知道如何在下次使用该方法时保留值。任何帮助都是经过鉴定的:)

import java.util.Random;
public class Testing {
    public static void main(String[] args) {
        System.out.println(random());
        System.out.println(random());
    }
    public static String random() {
        Random rgen = new Random();
        int rNumber;
        int num = 0, num2 = 0;

        do {
            rNumber = rgen.nextInt(2) + 1;
        } while ((rNumber == 1 && num == 1) || (rNumber == 2 && num2 == 1));

        if (rNumber == 1) {
            num = 1;
            return "N1";
        }
        else if (rNumber == 2) {
                num2 = 1;
            return "N2";
        }
        else
            return null;
    }
}

4 个答案:

答案 0 :(得分:0)

我认为您的意思是您希望保留numnum2的值。
random()中删除它们的声明,并将它们放在类级别的main()之前:

private static int num = 0;
private static int num2 = 0;

否则,此循环:

do {
    rNumber = rgen.nextInt(2) + 1;
} while ((rNumber == 1 && num == 1) || (rNumber == 2 && num2 == 1));

没有任何意义,因为条件:

((rNumber == 1 && num == 1) || (rNumber == 2 && num2 == 1))

将始终为false

答案 1 :(得分:0)

要存储超出函数范围的内容,请将其返回传递给下一个调用或使用静态变量:

public class Testing {
    public static int store = 0;
    /* your code*/
}

可以像访问其他变量一样访问此变量,但是不会丢失其值。曾经。只能更改。

但是更简单的解决方案是:

public static void random() {
    System.out.println(Math.random() < 0.5 ? "N1\nN2" : "N2\nN1");
}

答案 2 :(得分:0)

对于此作业,您必须创建两个全局变量num1和num2(在任何函数范围之外声明的变量)。由于您的random()函数是静态的,因此最好使用静态全局变量。全局变量在函数修改其值之前不会重置并保留其值。

答案 3 :(得分:0)

您在curl -4vvvu guest:guest -X DELETE 'localhost:15672/api/connections/My%20RabbitMQ%20Connection' 处的条件始终为假。初始化后,您尚未为num和num1分配任何新值。 另外,也许您想要这样的东西?

} while ((rNumber == 1 && num == 1) || (rNumber == 2 && num2 == 1));