приведение массива int к двойному для вычисления процента - PullRequest
0 голосов
/ 20 марта 2012

Я пишу программу для начинающих, используя массивы, math.random и и random генератор, чтобы вычислить сумму 2 бросков кубика определенное количество раз.

Я пытаюсь подсчитать, сколько раз сумма показывается, и мне нужно 2 знака после запятой.Есть ли способ приведения (?) И массива так, чтобы он отображался с двумя десятичными знаками?

Кроме того, когда я печатаю на экране программу, она показывает 120 раз каждую сумму.Я не понимаю, почему

Это то, что я имею до сих пор:

import java.util.Random;
import java.util.Scanner;
public class Die {

    public static void main(String[] args){

        int faces;
        int face1;
        int face2;
        int face3;
        int face4;
        int times;
        int index;
        int sum;



        Scanner scan = new Scanner(System.in);
        Random rand = new Random();

        System.out.println("%-0-1-2-3-4-5-6-7-8-9-0-1-2-3-4-5-6-7-8-9-0-%");
        System.out.println("%\t\t\t\t\t    %");
        System.out.println("%  How good is the Random Number Generator  %");
        System.out.println("%\t\t\t\t\t    %");
        System.out.println("%-0-1-2-3-4-5-6-7-8-9-0-1-2-3-4-5-6-7-8-9-0-%");

        System.out.println();
        System.out.print("What is the number of sides of each die? ");
        faces = scan.nextInt();
        System.out.print("How many times do you want to roll the dice ?");
        times = scan.nextInt();


        int[]rollCount = new int[(faces*2) + 1];

        for (int i = 0; i<rollCount.length; i++)
            rollCount[i] = 0;

                int dice1=faces;
                    for (int k=1; k<=dice1; k++){
                        int dice2=faces;
                            for (int r=1; r<=dice2; r++){

                    rollCount[k+r]++;

                    for (int roll = 0; roll <times; roll++){
        }

    }
}




        int[]rollCountRand = new int[(faces*2) + 1];
        for (index = 0; index <rollCountRand.length; index++)
            rollCountRand[index] = 0;


        for (int roll = 0; roll<=times; roll++){
            face1 = 1 + rand.nextInt(faces);
            face2 = 1 + rand.nextInt(faces);
            rollCountRand[face1 + face2]++;
        }


        int[]rollCountMath = new int [(faces*2)+1];

        for (int i=0; i<rollCountMath.length; i++)
            rollCountMath[i] = 0;

        for (int j=0; j<=times; j++){

            face3 = (int)(faces* Math.random() + 1);
            face4 = (int)(faces* Math.random() + 1);
            sum = face3 + face4;
            rollCountMath[sum]++;
        }



        for (int r = 2; r <rollCount.length; r++){

             int percent = (rollCount[r] / ((faces*faces)*100));

        for (int k = 2; k <rollCountRand.length; k++){

             int percentOne = rollCountRand[k] / (times/100);

            for (int q = 2; q <rollCountMath.length; q++){

                int percentTwo =rollCountMath[q] / (times/100);





        System.out.print(r + "\t( " + rollCount[r] + ")"  + "\t" + "%" + percent + "\t" + k + "\t( " + rollCountRand[k]+")" + "\t"+"%"+percentOne + "\t" + q + "\t( " + rollCountMath[q]+")" + "\t" + "%"+percentTwo);
            System.out.println();

Спасибо!

1 Ответ

2 голосов
/ 20 марта 2012

Вы не можете напрямую преобразовать int[] в double[], но вы можете разыграть каждый элемент по мере его обработки, например, когда вы рассчитываете процент, вы можете написать int percentTwo = (int)Math.round((double)rollCountMath[q] / (times/100.0));.

какЧто касается количества циклов, похоже, что в вашем коде, размещенном здесь, отсутствуют закрывающие скобки (возможно, это просто ошибка форматирования при вставке кода), поэтому трудно сказать, как он будет себя вести, если бы фигурные скобки были на месте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...