好的,所以这个程序......我不知道如何制作它,更不用说让它成功了。该程序的目标是接受用户INT值放入2d数组(5行,4列),输出数组,并给出每行的平均值。任何有关使其工作和缩短它的帮助将不胜感激。
import java.io.*;
class largeArray
{
public static void main(String[] args) throws IOException
{
InputStreamReader inStream = new InputStreamReader (System.in);
BufferedReader userInput = new BufferedReader (inStream);
System.out.println("Welcome to the array making program.");
System.out.println("Please enter the first 4 numbers:");
int[][] datArray = new int[5][4];
datArray[0][0] = Integer.parseInt(userInput.readLine());
datArray[0][1] = Integer.parseInt(userInput.readLine());
datArray[0][2] = Integer.parseInt(userInput.readLine());
datArray[0][3] = Integer.parseInt(userInput.readLine());
System.out.println("Please enter in the next 4 numbers:");
datArray[1][0] = Integer.parseInt(userInput.readLine());
datArray[1][1] = Integer.parseInt(userInput.readLine());
datArray[1][2] = Integer.parseInt(userInput.readLine());
datArray[1][3] = Integer.parseInt(userInput.readLine());
System.out.println("Please enter in the third set of 4 numbers:");
datArray[2][0] = Integer.parseInt(userInput.readLine());
datArray[2][1] = Integer.parseInt(userInput.readLine());
datArray[2][2] = Integer.parseInt(userInput.readLine());
datArray[2][3] = Integer.parseInt(userInput.readLine());
System.out.println("Please enter in the fourth set of numbers:");
datArray[3][0] = Integer.parseInt(userInput.readLine());
datArray[3][1] = Integer.parseInt(userInput.readLine());
datArray[3][2] = Integer.parseInt(userInput.readLine());
datArray[3][3] = Integer.parseInt(userInput.readLine());
System.out.println("Please enter in the last set of numbers:");
datArray[4][0] = Integer.parseInt(userInput.readLine());
datArray[4][1] = Integer.parseInt(userInput.readLine());
datArray[4][2] = Integer.parseInt(userInput.readLine());
datArray[4][3] = Integer.parseInt(userInput.readLine());
for(int row = 0; row < datArray.length; row++)
{ System.out.print("Row " + row + ": ");
for (int column = 0; column < datArray[row].length; column++)
System.out.print(datArray[row][column] + " ");
System.out.println( );
}
}
}
当前问题:如何让行中的所有值以简短的方式平均? IT也需要输出平均值。
答案 0 :(得分:5)
如果希望数组包含5个对象,请使用:
int[][] datArray = new int[5][5];
您的错误是您将长度设置为:
int[][] datArray = new int[5][4];
因此所有内部数组的长度为4(索引0-3),并且您无法在索引4中设置值:
datArray[0][4] = Integer.parseInt(userInput.readLine());
顺便说一句,我建议你在这里使用循环...
答案 1 :(得分:3)
如果定义int[][] datArray = new int[5][4];
,则无法使用位置datArray [x] [4],它超出范围。
你要求的是25号而不是你想要的20号,每行数字的位置为0,1,2,3,4,它应该是0,1,2,3。
要计算每行的平均值,您可以:
float[] avg = new float[5];
for(int i=0 ; i < 5 ; i++)
{
float sum = 0;
for(int j=0 ; j < 4 ; j++)
{
sum += datArray[i][j];
}
avg[i] = sum/4;
}
您可以通过以下方式将此信息添加到输出消息中:
for(int row = 0; row < datArray.length; row++)
{
System.out.print("Row " + row + ": ");
for (int column = 0; column < datArray[row].length; column++)
System.out.print(datArray[row][column] + " ");
System.out.print("Row Average value: " + avg[row]);
System.out.println( );
}
答案 2 :(得分:1)
较短的版本:
import java.io.*;
class LargeArray {
/**
* Arrays dimension.
*/
private static final int ARRAY_DIM_X = 4;
private static final int ARRAY_DIM_Y = 5;
public static void main(String[] args) throws IOException {
BufferedReader tempReader = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Welcome to the array making program.");
int[][] tempDatArray = new int[ARRAY_DIM_Y][ARRAY_DIM_X];
for (int x = 0; x < ARRAY_DIM_Y; x++) {
System.out.println(String.format("Please enter %1$s numbers:", ARRAY_DIM_X));
for (int y = 0; y < ARRAY_DIM_X; y++) {
tempDatArray[x][y] = Integer.parseInt(tempReader.readLine());
}
}
printArray(tempDatArray);
}
private static void printArray(int[][] anArray) {
for (int row = 0; row < anArray.length; row++) {
System.out.print("Row " + row + ": ");
for (int column = 0; column < anArray[row].length; column++) {
System.out.print(anArray[row][column] + " ");
}
// now calculate the avrg ...
System.out.println(" = " + calculateAverage(anArray[row]));
}
}
private static float calculateAverage(int[] anArray) {
float tempSum = 0f;
for (int i = 0; i < anArray.length; i++) {
tempSum += anArray[i];
}
return tempSum / anArray.length;
}
}
答案 3 :(得分:0)
你声明了int [] [] datArray = new int [5] [4]这意味着一个包含5行和4列的二维数组,你在datArray [0] [4]插入指向第1行和第5列因此这个异常,将其更改为int [] [] datArray = new int [5] [5]并且它将起作用
答案 4 :(得分:0)
说清楚:
int[][] datArray = new int[5][4];
它从dataArray [0] [0]到dataArray [4] [3];
[5] [4]意味着你取前5位和前4位,这在Java中意味着它从0到4和0到3.在Java中,第一个数字从0开始,而不是1。
答案 5 :(得分:0)
数组从索引0开始而不是1。 在这段代码中, int [] [] datArray = new int [5] [4]; 你有5行4列。 但是你要尝试索引不可用的第5列。所以它会抛出ArrayIndexOutOfBoundsException。