2012-03-19 4 views
0

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

Я пытаюсь рассчитать процентное количество раз, когда сумма появляется и вам нужно 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(); 

Спасибо!

+0

'Math.random' и' Random'? – Jon

+0

Да, чтобы увидеть, соответствуют ли они – user1279434

+0

Вы не можете «отличить» весь массив от int до double. Значения в массиве являются значениями 'int' и не будут волшебным образом изменяться даже на языке, таком как C, где акция фактически разрешена (или, по крайней мере, не вызывает ошибку компиляции). Если вы хотите, чтобы значения float составляли ваш массив элементов типа float. –

ответ

2

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

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

Смежные вопросы