【发布时间】:2010-06-21 04:34:06
【问题描述】:
在 addRolls 方法下,我需要使用“总”变量数的频率填充 nums 数组。这些方法将两个骰子正确地加在一起并将其存储在“total”变量中,但我似乎无法正确地将它们放入一个执行频率的数组中,例如上面的方法 - indFreq。如果这很难理解,我认为这可能更有意义:我相信这只是需要查看的 addRolls 方法。它需要返回一个具有“总数”频率的数组。
import java.util.Scanner;
public class Project2 {
public static void main( String[] args )
{
Scanner inp = new Scanner( System.in );
int matrix [][]=new int[100][2];
System.out.print("Press 'q' to exit or 'enter' to continue: \t");
String response =inp.nextLine();
while ( !response.toLowerCase().equals("q") ){
for (int row=0;row<matrix.length;row++){
for (int column=0;column<matrix[row].length;column++)
matrix[row][column]=diceRoll();
}
int [] hist1=indFreq(matrix);
int [] roll=addRolls(matrix);
for (int i=1;i<hist1.length;i++){
String star=starPrint(hist1[i]);
System.out.print(" \n" +hist1[i]+ star);
}
System.out.println("");
// }
System.out.print("\n\nPress 'q' to exit or 'enter' to run again:\t");
response =inp.nextLine();
}
}
public static int diceRoll(){
int num=(int)(Math.random()*6+1);
return num;
}
public static String starPrint(int value){
String star= "";
for (int i=0;i<value;i++){
star +="*";
}
return star;
}
public static int [] indFreq(int [][] matrix){
int [] nums =new int[7];
for (int i=0;i<matrix.length;i++){
for (int j=0; j<matrix[i].length;j++)
nums[matrix[i][j]] += 1;
}
return nums;
}
public static int [] addRolls(int [][] matrix){
int total= 0;
int[]nums=new int[13];
//Adds the rows together.
for (int i=0;i<matrix.length;i++){
total=0;
for (int j=0;j<matrix[i].length;j++)
total+=matrix[i][j];
}
return nums;
}
}
【问题讨论】:
-
你可能想发布完整的作业文本,因为你的描述很难理解。
-
我相信这只是需要查看的 addRolls 方法。它需要返回一个具有“总数”频率的数组。
-
跑题了,但是你为什么把
nums数组的长度设置为13呢? -
由于某种原因,它是数字数组 +1。嗯,我不确定具体细节,但我很确定它必须是那样的。可能是因为它在模拟掷骰子,或者是因为 math.random 的工作原理?有更多知识的人想拿这个吗?