java - 在使用命令行参数创建的数组中添加列
问题描述
我对这个程序的目标是创建一个二维数组ratings
,其大小由命令行的前两个参数指定。args[0]
将表示行数r
并arg[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。我希望对列而不是行求和,但不知道如何解决它。谢谢
解决方案
我用更简单的版本更改了您的原始代码。如果您在理解解决方案时遇到问题,请告诉我。
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 转换的验证并检查用户输入的正确性
推荐阅读
- linux - Rust 编译柴油机 sqlite3 生成的列
- powershell - 在 Jenkins 管道中为 powershell 变量赋值
- python - 程序延迟循环 - tkinter
- javascript - 将字符串从末尾拆分到第二个空格
- python - 如何为简单的前馈网络替换 Tensorflow 中的输入层?
- c++ - 为什么可以使用 operator<=> 比较数组成员,而不是独立数组?
- python - 在不知道键/值的情况下对字典列表进行排序
- node.js - 如何使用 NodeJS 从不同的服务器读取文件
- javascript - 如何在nodejs中下载tesseract的预处理图像
- kubernetes - 先负载均衡还是先匹配入口规则?