我正在开发一个程序,打印出一个填充了随机生成的整数的表。大多数逻辑相对简单并且运行良好。我想做的一件事是添加并打印每列的总值,以及表中所有值的最终总和。我一直在寻找答案,但没有找到解决问题的运气。
rowNbr = 7; // ROW CONTROLS
colNbr = 5; //COLUMN CONTROLS
rpt01 = String.format("%0" + (colNbr-1) + "d", 0).replace("0",dash); //Redefine rpt01
colBld = String.format("|---------------|%s\n",rpt01); //Redefine colBld
String cnrTxt = "First Quarter";
System.out.printf(colBld);
System.out.printf("|%-15s",cnrTxt);
for(int i = 1; i < colNbr; i = i++){ //Open for loop (columns)
String regTxt = "Region " + i++;
System.out.printf("|%-10s",regTxt);
} //End for
System.out.printf("|\n");
//Initialize array
int sales[] = new int[100];
int idx = 0;
for(int i = 1; i <= rowNbr-3; i++){
String prodTxt = "Product " + i;
System.out.printf(colBld);
System.out.printf("|%-15s|",prodTxt);
for(int j = 0; j < colNbr-1; j++){ //Open for loop (columns 2)
sales[idx] = (int)(Math.random() * 16 + 1);
System.out.printf("%-10d|",sales[idx]);
idx++;
} //End for
System.out.printf("\n");
} //End for
int totalNbr = 0; //Placeholder zero
int regNbr = 0; //Placeholder zero
String totalTxt = "Final Total: ";
String regTxt = "Region Totals";
System.out.printf(colBld);
System.out.printf("|%-15s|%-10s|\n",regTxt,regNbr);
System.out.printf(colBld);
System.out.printf("|%s%s\n",totalTxt,totalNbr);
System.out.printf(colBld);
以下是代码运行后的状态:
|---------------|----------|----------|----------|----------|
|First Quarter |Region 1 |Region 2 |Region 3 |Region 4 |
|---------------|----------|----------|----------|----------|
|Product 1 |2 |10 |3 |1 |
|---------------|----------|----------|----------|----------|
|Product 2 |15 |15 |7 |16 |
|---------------|----------|----------|----------|----------|
|Product 3 |15 |13 |7 |9 |
|---------------|----------|----------|----------|----------|
|Product 4 |4 |14 |11 |11 |
|---------------|----------|----------|----------|----------|
|Region Totals |0 |
|---------------|----------|----------|----------|----------|
|Final total: 0
|---------------|----------|----------|----------|----------|
老实说,不知道从哪里开始。任何帮助表示赞赏!
由于您已经按顺序使用随机整数值顺序填充销售数组来表示顺序显示的区域,因此只需按区域数量的增量逐步遍历数组元素并对每个步骤中检测到的元素求和即可。
要确定要显示的实际区域数量和要跟踪的区域总计数量,我们可以将其从colNbr变量中包含的值减去1(将显示5 - 1 = 4个区域)。
知道了这一点,我们声明了另一个名为regionTotals的整数数组,并给它一个4的长度:
int[] regionTotals = new int[colNbr-1];
现在需要逐步完成销售数组元素并将正确的sales数组元素与正确的regionTotal元素相加,如下所示:
int regionCols = colNbr-1;
int[] regionTotals = new int[regionCols];
int stepCounter = 0;
for (int i = 0; i < sales.length; i++) {
stepCounter++;
if (stepCounter > regionCols) { stepCounter = 1; }
int regionIndex = (stepCounter - 1);
regionTotals[regionIndex]+= sales[i];
}
System.out.println("\nRegion Totals: " + Arrays.toString(regionTotals) + "\n");
将上面的代码直接放在整数变量的声明和初始化上面:
int totalNbr = 0; //Placeholder zero
如何将regionTotals数组元素格式化为表格取决于您,但请记住,Array基于零,因此数组索引0处的元素包含区域1的总和。