首页 > 解决方案 > 在使用命令行参数创建的数组中添加列

问题描述

我对这个程序的目标是创建一个二维数组ratings,其大小由命令行的前两个参数指定。args[0]将表示行数rarg[1]表示列数c。接下来的参数都将用于填充数组。因此,如果命令行参数是3 2 5 2 3 3 4 1。我希望该数组是 3 行乘 2 列。值 5 将在 rating[0][0] 中,值 2 将在 rating[0][1] 中,值 3 将在 rating[1][0] 中,等等。在那之后,我想计算每列的总和。因此,在这种情况下,第 0 列将是 12,第 1 列将是 6。

public static void main(String[] args) {
    int r = Integer.parseInt(args[0]);
    int c = Integer.parseInt(args[1]);
    int[][] ratings = new int[r][c];
    int z = 2;
    int y = 3;
    int x = 0;
    int counting = 0;
    int sum = 0;
    for (int rows = 0; rows < ratings.length; rows++ ) {
        for (int column = 0; column < ratings[c].length; column++){
            ratings[rows][column] = Integer.parseInt(args[z]);
            sum += ratings[rows][column];
            z++;
        }
        System.out.println(sum);
        sum = 0;
    }
    //System.out.println(movieRating);
}

这是我对列求和的尝试,但现在这只是求和 5 和 2、3 和 3、4 和 1。我希望对列而不是行求和,但不知道如何解决它。谢谢

标签: javaarraysmultidimensional-arraycommand-line

解决方案


我用更简单的版本更改了您的原始代码。如果您在理解解决方案时遇到问题,请告诉我。

public static void main(String[] args)
{
    int row = Integer.parseInt(args[0]);
    int col = Integer.parseInt(args[1]);
    
    int arrayLength = row * col;            // use a single dimension array, for simplicity
    int[] ratings = new int[arrayLength];   // the array size is based on the rows and columns
    
    // add data to the 'ratings' array
    // This is not actually needed because the conversion can be done directly when the columns are summed up
    for(int i = 0; i < arrayLength; i++)
    {
        ratings[i] = Integer.parseInt(args[i + 2]);
    }
    
    // sum up the columns using the % operator
    int[] result = new int[col];
    for(int i = 0; i < arrayLength; i++)
    {
        result[i % col] += ratings[i];
    }
    
    // print result
    for(int i = 0; i < result.length; i++)
    {
        System.out.println(String.format("Movie %d rating is %d", i, result[i]));
    }
}

PS:您缺少围绕 String 到 int 转换的验证并检查用户输入的正确性


推荐阅读