在addRolls方法下,我需要使用'total'变量数的频率填充nums数组。这些方法正确地将两个骰子卷加在一起并将其存储在'total'变量中,但我似乎无法将它们正确地抛入一个频率的数组中,例如上面的方法 - indFreq。如果难以理解,我认为这可能更有意义:我只相信需要关注的addRolls方法。它需要返回一个频率为'total'数字的数组。
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;
}
}
答案 0 :(得分:2)
//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];
nums[total]++;
}
你试过这个吗?
for (int i=1;i<roll.length;i++){
String star=starPrint(roll[i]);
System.out.print("\n" + i+ " : " +roll[i] + " " + star);
}
答案 1 :(得分:1)
看起来你在int[] nums
中对addRolls
做了什么。也许你想在某个地方nums[index]++;
?
foreach
循环在大多数循环中,实际上并不需要显式索引。在这些情况下,使用“for-each”循环代替它会更具可读性。这是一个例子:
int[] nums = { 1, 3, 5 };
int sum = 0;
for (int num : nums) {
sum += num;
}
System.out.println(sum); // prints "9"
对于二维数组(或更确切地说,数组数组):
int[][] mat = {
{ 1, 2, 3 },
{ 4, 5 },
{ 3, 3, 3 }
};
for (int[] row : mat) {
int prod = 1;
for (int num : row) {
prod *= num;
}
System.out.println(prod);
} // prints "6", "20", "27"
而不是写
variable += 1;
你可以写:
variable++;
另外,请注意缩进。你的缩进是非常不一致的。
此外,您还可以实例化java.util.Random
一次并在应用程序中调用其int nextInt(int n)
方法,而不是使用Math.random()
然后执行时髦的公式。