Java使用循环内循环的返回值

时间:2017-12-13 14:30:04

标签: loops for-loop random return

抱歉,英语是我的第一语言。我正在构建一个主类和方法来创建一堆随机数。我想使用for循环,并希望在循环的每一步使用最后一个循环的结果。

要求用户输入3个整数以使用以下公式创建随机数: z =(a * z + b)%m;

1.Step z =(a * 0 + b)%m;让我们说结果是7。 2.步骤: z =(a * 7 + b)%m 等等。

我希望程序能给我20个随机数。 在循环的第一步中,随机数z为0,然后在每个附加步骤中,从最后一步的结果构建随机数。 我希望你们能理解我想说的话。

我的代码到目前为止:

import java.io.*;
public class Zufallszahlentest {

    public static void main (String [] args) throws IOException {

        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        System.out.println("Geben Sie nacheinander die Werte für a,b &m ein.");
        int a = Integer.parseInt(in.readLine());
        int b = Integer.parseInt(in.readLine());
        int m = Integer.parseInt(in.readLine());

        Methode(a,b,m);
        System.out.println(Methode(a,b,m));
    }

    static int Methode(int a, int b, int m){
            int z = 0;
            for (int i = 0; i <= 20; i++) {
                 z = (a*z+b)%m;
            }
            return z;
     }
}

我已经坐了几个小时,我已经建立了没有结果的巨大循环,我觉得每次尝试都会变得笨拙和笨拙。

帮助将受到高度赞赏。

2 个答案:

答案 0 :(得分:0)

你的循环位置错误 - 它应该包含println,如果你想让println发生20次..这应该有效:

import java.io.*;
public class Zufallszahlentest {

    public static void main (String [] args) throws IOException {

        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        System.out.println("Geben Sie nacheinander die Werte für a,b &m ein.");
        int a = Integer.parseInt(in.readLine());
        int b = Integer.parseInt(in.readLine());
        int m = Integer.parseInt(in.readLine());

        int z = Methode(a, b, m, 0);
        for (int i = 0; i < 20; i++) {
            System.out.println(z);
            z = Methode(a, b, m, z);
        }
    }

    static int Methode(int a, int b, int m, int z) {
        return (a * z + b) % m;
    }
}

答案 1 :(得分:-1)

  

如果要保留以前的值,请将其设置为静态。你有   在类声明的开头声明'z'是一个静态int   因此'z'将成为一次类变量   初始化并保留先前的值。

import java.io.*;
public class Zufallszahlentest {
    static int z=0; //class variable

    public static void main (String [] args) throws IOException {
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        System.out.println("Geben Sie nacheinander die Werte für a,b &m ein.");
        int a = Integer.parseInt(in.readLine());
        int b = Integer.parseInt(in.readLine());
        int m = Integer.parseInt(in.readLine());

        Methode(a,b,m);
        System.out.println(Methode(a,b,m));
    }

    static int Methode(int a, int b, int m){
            for (int i = 0; i <= 20; i++) {
                 z = (a*z+b)%m;
            }
            return z;
     }
}