0

私のプログラムの目標は、2つの6面ダイスをロールし、次に2つを追加して(1000回)、プログラムでロールされた数字「4」の回数を出力することです。ループの外側と内側でmath.randomクラスを使用してみましたが、明確な違いはありません。最初はforループを使用していなくても、最終的には出力をmainメソッドに呼び出して出力することを目標としています。私が聞いたcount4++は、何らかのエラーが原因でそれに対して動作することを除いて、そのような操作で機能します。ヘルプ、ガイダンス、アドバイスをいただければ幸いです。最高のコード記述形式、スキル、または一般的な知識を持っていないことをお詫びします。これはプログラミングを始める最初の年であることに注意してください。エラーcount4++を受け取ります。解決できません。修正する唯一の方法は0に設定することです。これは、常に0を出力するため、プログラムを台無しにします。

import java.io.*;

public class Delt {


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

int i; 
int Sixside1;
int Sixside2;
int count4 = 0;
int [] data = new int [1000];
input (data);

System.out.println("The number of times '4' came up in the six sided dices is :" + count4);




}
public static void input (int num []) throws IOException {
BufferedReader myInput = new BufferedReader (new InputStreamReader (System.in));
String input;

System.out.println("Hello and welcome to the program");
System.out.println("In this program two six sided dices will be rolled and one eleven sided dice will be rolled (1000 times each");

System.out.println("The dices will be rolled to determine the odds of how many times the roll 4 comes up on both dies(Press any key to con't) ");
input = myInput.readLine ();



for (int i = 0; i < 1000; i++) 
{
  int Sixside1 = (int) (Math.random ()*(6-4) + 4); 
  int Sixside2 = (int) (Math.random ()*(6-4) + 4); 

  double total = Sixside1 + Sixside2;
  if ( total == 4) {
    // print amount of times 4 shows up in 1000 rolls, ?? 
    count4++;
    //return it to main method??
  }
}
} }
4

1 に答える 1

2

ローカル変数を初期化していないcount4-これを行う必要があります。ループの前に、次のことができますint count4 = 0;。あるメソッドのローカル変数は別のメソッドのローカル変数とは異なるため、メソッドからメインメソッドにcount4変数を返し、それを出力することをお勧めします。input()

また、想定どおりにダイスロールを計算していません。つまり、合計が4になることはありませんMath.random()。0から1(排他的)までの乱数を返します。したがって、ダイスは次のようになります。(int)( 0-0.999)* 2 + 4 =(int)(0-1.999)+ 4 =(int)4-5.9999=4-5。代わりに、を使用して(int)Math.random()*6+1ください。

編集:

public static void main(String[] args) throws Exception  {
    System.out.println(input());
}

public static int input () throws IOException {
    BufferedReader myInput = new BufferedReader (new InputStreamReader (System.in));
    System.out.println("Hello and welcome to the program");
    System.out.println("In this program two six sided dices will be rolled and one eleven sided dice will be rolled (1000 times each");

    System.out.println("The dices will be rolled to determine the odds of how many times the roll 4 comes up on both dies(Press any key to con't) ");
    myInput.readLine();
    int count4=0;
    for (int i = 0; i < 1000; i++) 
    {
        if ( (int)(Math.random ()*6+1)+(int)(Math.random ()*6+1) == 4) {
            count4++;
        }
    }
    return count4;
} 
于 2013-03-19T23:45:27.580 に答える