2016-05-30 2 views
0
package Review_Randomnum; 
import java.util.Scanner; 



public class RandomNum { 

    public static void main(String[] args) { 
     System.out.println("Please enter a minimum value: "); 
     Scanner input = new Scanner(System.in); 
     int first = input.nextInt(); 
     System.out.println("Please enter a maximum value: "); 
     int second = input.nextInt(); 
     int number = ((int)(Math.random()) * ((second - first)) + first); 
     System.out.println(number); 


    } 

} 

だから私はこのウェブサイト上の多数の回答を確認していないてきたが、無駄に、私はすべてのエラーを取得しない、私はちょうど取得最小値が印刷されます。私の乱数生成器が動作していない、他の質問を見て試してみましたが、何の解決

((int)(Math.random()) 

この理由は、ということです:私はあなたの乱数は次の式で0に切り捨てされている入力

答えて

5

プログラムは2つの値の間のランダムな整数を生成するために取得する方法がわかりませんintにキャストダブル1より大きい又は0未満に等しいが、なり戻りMath.random()(詳細はdocumentation参照)0を切り捨て。

代わりに、doubleように、第1希望の数を計算し、次にintに戻っキャスト:

int number = (int)(Math.random() *(second - first) + first); 
+2

より良い解決策は[ ''にRandom.nextInt(int型N)]を使用することであろう(HTTPS: //docs.oracle.com/javase/7/docs/api/java/util/Random.html#nextInt%28int%29): 'ランダムrnd =新規Random(); int number = rnd.nextInt(second-first + 1)+ first; ' – Andreas

+2

また、あなたは' + 1'を見逃しました。それがなければ、あなたは決して "最大値"、すなわち 'second'の値を得ることはありません。 – Andreas

関連する問題