-3

私は次のコードを使用しています。ランダムに数字を生成しますが、問題は、数字を生成しない理由を理解できないことです1

        int ran, g, d, col, ran2;
        double y = 1000 * (Double.parseDouble(t2.getText()));
        int x = (int) y;
        d = Integer.parseInt(anum.getText());
        double c = 10;
        int prevrandom = Integer.parseInt(lnum.getText());
        lnum.setText("");
        lnum.setVisible(true);
        for (g = 0; g==0;) {
            d = Integer.parseInt(anum.getText());
            ran = (int) (Math.random() * (c)); // Random Number Creation Starts
            if (ran > (c / 10)) {
                g = 1;
                ran2 = ((int) (Math.random() * 10)) % 2;
                if (ran2 == 1) {
                    ran = ran * (-1);
                }
                d = d + ran;
                if (d < 0) {
                    ran = ran * (-1);
                    d = d + (2 * ran);
                }
                int a = d - ran;
                if(prevrandom==ran){
                    g=0;
                }
                if(g==1){
                    lnum.setText("" + ran);
                }
            }
        }

この関数(ボタン)をどこかから呼び出します。問題は、合計 (「a」) が 4 になったときに発生します。私の条件によれば、「1」以外の数値は許可されないため、無限ループに入ります。

私はran変数について話している。whereを掛けMath.randomた後に得られるのは、正の整数です。10^xx

ran2これは、値が 1 または 0 の数値です。Math.Random に 10 を掛けると、1 桁の数値が得られ、それを 2 で mod します。

これは、Java を初めて使用する 14 歳の少年です。落胆させるのではなく、助けてくれる人々がここにいることは素晴らしいことです。

4

3 に答える 3

3

Javadocを見てください:

0.0以上 1.0 未満の正符号付きの double 値を返します。返される値は、その範囲から (ほぼ) 一様に分布する疑似ランダムに選択されます。

整数の乱数が必要な場合は、java.util.Randomを使用したほうがよいでしょう。範囲内 (包括的) のランダムな整数を生成するには a..b、次を使用できます。

Random random=new Random();
int rnd=a+random.nextInt(b-a+1);
于 2013-10-02T09:22:36.353 に答える
1

問題はコードにあります

 if (ran > (c / 10)) {

1 に等しい乱数が作成されます。しかし、ここでは記号「>」のために拒否されます。代わりに「>=」を使用してください。

于 2013-10-02T09:41:19.667 に答える