1

私のプログラムでは、範囲 2 から 12 の合計を保持するために、13 個の配列が作成されることになっています。 "。ただし、最初はプログラムは機能していましたが、後で、単一の math.random メソッドを使用する代わりに、プログラムで配列を使用する必要があることに気付きました。メインメソッドで配列値を単純に出力しようとしましたが、エラーがさらに発生しました。また、ヒストグラムを使用して配列をメインに呼び出す方法を調査しましたが、以前の試みを除いて、さらに多くのエラーが発生しました

私の質問は;

1: 主なエラーを修正するにはどうすればよいですか。ブール値から int に変換できるようにします。

2: return ステートメントはどのように機能しますか? 通常の整数と比べて配列では異なる必要がありますか?

ガイダンスや情報をいただければ幸いです。

import java.io.*;
public class dont {


public static void main(String[] args) throws Exception  {
    // System.out.println(input());
    int[] counts = new int[13];


    System.out.print("The number of times it rolls 4 on two 6  sided dice :" + counts);

}

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");
    int sum;
    int[] counts = new int[13];

    System.out.println("The dices will be rolled to determine the odds of how many times the roll 2 comes up on both dies(Press any key to con't) ");
    myInput.readLine();
    //int count2=0;
    int Sixside;
    for (int i = 0; i < 1000; i++) 
    {
        // two dice that add to 4, after being rolled one thousand times  
        Sixside = (int)(Math.random ()*6+1)+(int)(Math.random ()*6+1) == 4;  
        //print the number of times they add to 4
        counts[sum]++;


    }

    counts[i] = Sixside;
    {
        //return array to main
        return counts [13]; 
    }
}
}
4

2 に答える 2

1
Sixside = (int)(Math.random ()*6+1)+(int)(Math.random ()*6+1) ;

if(Sixside == 4)
   System.out.println("Print something");

状態を確認して印刷したいのだと思います。

counts[i] = Sixside;

for ループが終了した後に上記のコードを使用しています。i のスコープは、 for loop で宣言されているため、 for loop 内にのみあります。したがって、エラーが発生すると、シンボル変数 i が見つかりません

于 2013-03-20T13:38:11.457 に答える
1

boolean から int に変換するには:

一般に、 boolean があると仮定するとb、これを使用します。

int x = b? 1:0; // If b is true, x is now 1; if b is false, x is now 0.

これは三項演算子を使用します。

ただし、あなたの場合、この構成は不要です。私の理解が正しければ、サイコロがそのインデックスに合計された回数をインデックスに保持するi必要があります。countsそれを行うには:

int sumOfDice = (int)(Math.random ()*6+1)+(int)(Math.random ()*6+1);
counts[sumOfDice]++;

配列を返すには:

配列を返すことは、int を返すことによく似ています。「input()」のメソッド宣言を次のように変更するだけです。

public static int[] input () throws IOException {

そして return ステートメントへ

return counts;

配列を出力するには:

をインポートjava.util.Arraysして呼び出しますArrays.toString(yourArrayHere)

完全なプログラムは次のようになります。

import java.io.*;
import java.util.Arrays;

public class dont {

    public static void main(String[] args) throws Exception  {
        int[] counts = input();

        System.out.println("The number of times it rolls 4 on two 6  sided dice :" + counts[4]);
        System.out.println("The number of times each number was the sum:" + Arrays.toString(counts);
    }

    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"); // We don't actually roll any eleven-sided dice, so I'm not sure why this is here?
        int[] counts = new int[13];

        System.out.println("The dices will be rolled to determine the odds of how many times the roll 2 comes up on both dies(Press any key to con't) ");
        myInput.readLine();
        for (int i = 0; i < 1000; i++) 
        {
            int sumOfDice = (int)(Math.random ()*6+1) + (int)(Math.random ()*6+1);
            counts[sumOfDice]++;
        }

        // return array to main
        return counts;
    }
}
于 2013-03-20T14:20:48.033 に答える