Java:二维数组总计未完成
这是一个学校项目。它是将数组中的信息显示为管状格式,每行和每列的总计在右侧和底部。除了一行之外,它做所有的合计。我找不到问题出在哪里。有人能帮忙吗Java:二维数组总计未完成,java,multidimensional-array,sum,Java,Multidimensional Array,Sum,这是一个学校项目。它是将数组中的信息显示为管状格式,每行和每列的总计在右侧和底部。除了一行之外,它做所有的合计。我找不到问题出在哪里。有人能帮忙吗 import java.util.Scanner; //program uses class Scanner public class Ex6_20 { //method begins java application public static void main(String[] args)
import java.util.Scanner;
//program uses class Scanner
public class Ex6_20
{
//method begins java application
public static void main(String[] args)
{
//create Scanner to obtain imput
Scanner input = new Scanner(System.in);
int monthySales=0; //varible to hold mothly sales
int productNum; //varible to hold product number
int salesNum=0; //varible to hold saleperson number
int totalSales=0; //varible to hold total sales
int []totalProduct = {0,0,0,0,0};//build array to hold total product
int []salesTotal = {0,0,0,0,0};//build array to hold total salesperson
// Build array to hold sales information by salesperson and poduct
int[][]sales = {{2000,1500,500,800,0},
{500,2200,600,1000,0},
{1000,2000,300,2100,0},
{2500,4000,400,3000,0},
{300,3200,500,2300,0},
{0,0,0,0}};
//figure total by product
for(int row =0; row < sales.length; row++)
{
for(int column = 0; column < sales[row].length; column++)
totalProduct[column] += sales[row][column];
}//end for
//figure total by salesperson
for(int column = 0; column < sales.length; column++)
{
for(int row = 0; row < sales[column].length; row++)
salesTotal[row] += sales[column][row];
}//end for
//fill totals for product
for(int i = 0; i < 5; i++)
{
sales[i][4] = totalProduct[i];
}//end for
//fill totals for salesperson
for(int i = 0; i < 4; i++)
{
sales[5][i] = salesTotal[i];
}//end for
// print info from array in table format
for(int row =0; row < sales.length; row++)
{
for(int column = 0; column < sales[row].length; column++)
System.out.print(sales[row][column]+"\t");
System.out.println();
}//end for
} //end main method
} //end class
import java.util.Scanner;
//程序使用类扫描程序
公共类Ex6_20
{
//方法启动java应用程序
公共静态void main(字符串[]args)
{
//创建扫描仪以获取输入
扫描仪输入=新扫描仪(System.in);
int monthySales=0;//可用于保存月销售
int productNum;//用于保存产品编号的变量
int salesNum=0;//用于保存销售人员编号的变量
int totalSales=0;//用于保存总销售额的变量
int[]totalProduct={0,0,0,0};//构建数组以保存total product
int[]salesTotal={0,0,0,0};//构建数组以容纳total salesperson
//构建阵列以保存销售人员和poduct的销售信息
int[][]销售额={{20001500500800,0},
{500,2200,600,1000,0},
{1000,2000,300,2100,0},
{2500,4000,400,3000,0},
{300,3200,500,2300,0},
{0,0,0,0}};
//图按产品分列的总数
for(int行=0;行
有几个问题:
如果您在“figure total by salesperson”中交换变量名“row”和“column”,您会注意到您实际上在进行与“figure total by product”完全相同的计算,只是使用了误导性的变量名。(您使用列作为行索引,反之亦然。)到目前为止,totalProduct和salesTotal都包含相同的值,这是不对的
这是主要问题
此外,当您显示销售总额和产品总额时,它们实际上是交换的。我怀疑这是因为您的意思是每行的总积为totalProduct[row]+=。。。每列的总销售额为salesTotal[column]+=…,但可能只是交换了名称,行/列索引正常
实际上,我建议从sales数组中删除额外的sum字段,以便所有行都具有相同的列数,并从使用硬编码数组边界开始,以便在得到正确的sum之前更清楚地显示发生了什么。然后,一旦计算出正确的总数,你就可以回到过去,让它更普遍地发挥作用。否则,您可能会不断获得ArrayIndexOutOfBounds异常,但原因并不明显,我怀疑到目前为止您最终会得到这个解决方案
例如,您可以从这样一个非常简单的方法开始,然后返回,使其更加友好和通用,以便可以处理不同的数组大小:
int[][] table = { { 1, 2, 3, 4, 5 }, { 2, 3, 4, 5, 6 }, { 3, 4, 5, 6, 7 } };
int[] rowSums = new int[3];
int[] colSums = new int[5];
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 5; j++) {
rowSums[i] += table[i][j];
colSums[j] += table[i][j];
}
}
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(table[i][j]);
System.out.print('\t');
}
System.out.println(rowSums[i]);
}
for (int j = 0; j < 5; j++) {
System.out.print(colSums[j]);
System.out.print('\t');
}
System.out.println();
int[]table={{1,2,3,4,5},{2,3,4,5,6},{3,4,5,6,7};
int[]行和=新的int[3];
int[]colSums=新的int[5];
对于(int i=0;i<3;i++){
对于(int j=0;j<5;j++){
行和[i]+=表[i][j];
colSums[j]+=表[i][j];
}
}
对于(int i=0;i<3;i++){
对于(int j=0;j<5;j++){
系统输出打印(表[i][j]);
系统输出打印('\t');
}
System.out.println(行和[i]);
}
对于(int j=0;j<5;j++){
系统输出打印(colSums[j]);
系统输出打印('\t');
}
System.out.println();
有几个问题:
如果您在“figure total by salesperson”中交换变量名“row”和“column”,您会注意到您实际上在进行与“figure total by product”完全相同的计算,只是使用了误导性的变量名。(您使用列作为行索引,反之亦然。)到目前为止,totalProduct和salesTotal都包含相同的值,这是不对的
这是主要问题
此外,当您显示销售总额和产品总额时,它们实际上是交换的。我怀疑这是因为您的意思是每行的总积为totalProduct[row]+=。。。每列的总销售额为salesTotal[column]+=…,但可能只是交换了名称,行/列索引正常
实际上,我建议从sales数组中删除额外的sum字段,以便所有行都具有相同的列数,并从使用硬编码数组边界开始,以便在得到正确的sum之前更清楚地显示发生了什么。然后,一旦计算出正确的总数,你就可以回到过去,让它更普遍地发挥作用。否则,您可能会不断获得ArrayIndexOutOfBounds异常,但原因并不明显,我怀疑到目前为止您最终会得到这个解决方案
例如,您可以从这样一个非常简单的方法开始,然后返回,使其更加友好和通用,以便可以处理不同的数组大小:
int[][] table = { { 1, 2, 3, 4, 5 }, { 2, 3, 4, 5, 6 }, { 3, 4, 5, 6, 7 } };
int[] rowSums = new int[3];
int[] colSums = new int[5];
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 5; j++) {
rowSums[i] += table[i][j];
colSums[j] += table[i][j];
}
}
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 5; j++) {
System.out.print(table[i][j]);
System.out.print('\t');
}
System.out.println(rowSums[i]);
}
for (int j = 0; j < 5; j++) {
System.out.print(colSums[j]);
System.out.print('\t');
}
System.out.println();
int[]table={{1,2,3,4,5},{2,3,4,5,6}{