5

次のコードは 0 のみを生成しています ;-;

私は何を間違っていますか?

public class RockPaperSci {

  public static void main(String[] args) {
    //Rock 1
    //Paper 2
    //Scissors 3
    int croll =1+(int)Math.random()*3-1;
    System.out.println(croll);
  }
}

編集、別のポスターがそれを修正する何かを提案しました。int croll = 1 + (int) (Math.random() * 4 - 1);

みんな、ありがとう!

4

4 に答える 4

22

Math.random()どの州を使用していますか

double以上で正の符号を持つ値を0.0返します1.0

結果を にキャストしているためint、値の整数部分が返されます0

それから1 + 0 - 1 = 0

使用を検討してくださいjava.util.Random

Random rand = new Random();
System.out.println(rand.nextInt(3) + 1);
于 2013-10-03T14:51:23.187 に答える
0
public static double random()

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

 int croll =1+(int)Math.random()*3-1;

例えば

 int croll =1+0*-1; 


System.out.println(croll); // will print always 0 
于 2013-10-03T14:53:04.680 に答える
0

私たちのすべての仲間は、あなたが得た予期しない出力の理由を説明しました。

ランダムを生成したいと仮定しますcroll

Random解決のために検討する

    Random rand= new Random();
    double croll = 1 + rand.nextInt() * 3 - 1;
    System.out.println(croll);
于 2013-10-03T14:55:57.423 に答える