Java 如何制作二维阵列并打印它们

Java 如何制作二维阵列并打印它们,java,arrays,Java,Arrays,好的,所以这个节目。。。我不知道怎么做,更不用说让它工作了。这个程序的目标是接受用户INT值,将其放入一个2d数组中,5行4列,输出数组,并给出每行的平均值。任何帮助使其工作和缩短它将不胜感激 import java.io.*; class largeArray { public static void main(String[] args) throws IOException { InputStreamReader inStream = new InputStream

好的,所以这个节目。。。我不知道怎么做,更不用说让它工作了。这个程序的目标是接受用户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( );
        }
    }
}

当前问题:如何使行中的所有值以快速方式求平均值?它还需要输出平均值。

如果希望阵列容纳5个对象,请使用:

int[][] datArray = new int[5][5];
您的错误是将长度设置为:

int[][] datArray = new int[5][4];
因此,所有内部数组的长度均为4索引0-3,您无法在中设置索引4的值:

datArray[0][4] = Integer.parseInt(userInput.readLine());

顺便说一句,我建议您在此处使用循环…

如果您希望阵列容纳5个对象,请使用:

int[][] datArray = new int[5][5];
您的错误是将长度设置为:

int[][] datArray = new int[5][4];
因此,所有内部数组的长度均为4索引0-3,您无法在中设置索引4的值:

datArray[0][4] = Integer.parseInt(userInput.readLine());
顺便说一句,我建议您在这里使用循环…

如果您定义int[]datArray=newint[5][4];您不能使用位置数据数组[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( );
}
如果定义int[][]datArray=newint[5][4];您不能使用位置数据数组[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( );
}

您已经声明了int[]datArray=new int[5][4],这意味着一个包含5行4列的二维数组,并且您正在插入指向第1行和第5列的datArray[0][4],因此出现此异常,将其更改为int[]datArray=new int[5][5],它将起作用

您已经声明了int[]datArray=new int[5][4]这意味着一个包含5行4列的二维数组,您插入的datArray[0][4]指向第1行和第5列。因此,如果出现此异常,请将其更改为int[][]datArray=new int[5][5],它将起作用

,以明确:

int[][] datArray = new int[5][4];
从dataArray[0][0]到dataArray[4][3]

[5] [4]表示取前5位和前4位,在Java中表示从0到4,从0到3。在Java中,第一个数字从0开始,而不是从1开始。

为了清楚起见:

int[][] datArray = new int[5][4];
从dataArray[0][0]到dataArray[4][3]


[5] [4]表示取前5位和前4位,在Java中表示从0到4,从0到3。在Java中,第一个数字从0开始,而不是从1开始。

数组从索引0开始,而不是从1开始。 在这部法典中, int[]datArray=新int[5][4]; 您将绑定到5行4列。
但您正在尝试第5列,其中索引不可用。因此它抛出ArrayIndexOutOfBoundsException。

数组从索引0而不是1开始。 在这部法典中, int[]datArray=新int[5][4]; 您将绑定到5行4列。 但您正在尝试第5列,其中索引不可用。因此它将ArrayIndexOutOfBoundsException抛出。

一个较短的版本:

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;
    }

}
较短的版本:

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;
    }

}


您的数组维度错误。第二个维度的长度为四个索引:0,1,2,3,但在第17行中,您处理的索引4不存在,并生成arrayindexoutofboundsexception。您肯定要将这些输入提示放入循环中。您的数组维度错误。第二个维度的长度为四个索引:0,1,2,3,但在第17行中,您处理的索引4不存在,并生成arrayindexoutofboundsexception。您肯定要将这些输入提示放入循环中。不,不,这是一个20数组网格,而不是25。因此,您不能将第五个元素放入其中。是的,你一提到就发现了,现在的问题是平均每一行。不,不,这是一个20数组的网格,不是25。所以你不能把第五个元素放进去。是的,你一提到就发现了,现在的问题是平均每一行。是的,我一提到就发现了。但是现在我需要找到一种简捷的方法来平均每一行…你想计算每一行的平均值吗?是的。我需要为每一行[0][0]到[0][4]等执行此操作。。。有点我需要它有一个输出,要么我已经脑死亡,要么我根本不知道如何使用这段代码来输出每行的平均值,就像你对数据数组所做的那样。avg[x]是数据数组[x][0]到[x][3]值的平均值。是的,我一提到它就知道了。但是现在我需要找到一种简捷的方法来平均每一行…你想计算每一行的平均值吗?是的。我需要为每一行[0][0]到[0][4]等执行此操作。。。有点我需要它有一个输出,要么我已经脑死亡,要么我根本不知道如何使用这个代码来
输出每行的平均值。与对数据数组所做的相同。平均值[x]是数据阵列[x][0]到[x][3]值的平均值。I。。诚然,这种编码水平是我无法真正理解的。在这个编码中,我们还没有学到一些函数,所以我对它有点怀疑。哦,是的,你可以跟着学!在您的示例中,您已经使用了一个循环来打印数组,我对输入执行相同的操作,仅此而已;啊,我忘了提一下,这个例子现在打印出每行的平均值:行0:1234=2.5行1:56433=4.5行2:1111=1.0行3:34434=3.5行4:56777=6.25老实说,这段代码基本上是从我的笔记中一行一行复制过来的。。诚然,这种编码水平是我无法真正理解的。在这个编码中,我们还没有学到一些函数,所以我对它有点怀疑。哦,是的,你可以跟着学!在您的示例中,您已经使用了一个循环来打印数组,我对输入执行相同的操作,仅此而已;啊,我忘了提到,这个例子现在打印出每一行的平均值:行0:1234=2.5行1:56433=4.5行2:1111=1.0行3:34434=3.5行4:56777=6.25老实说,这段代码基本上是从我的笔记中逐行复制的。