2017-12-18 161 views
-1

我正在編寫一個打印出填充隨機生成整數的表的程序。大部分邏輯相對簡單,工作得很好。我想要做的一件事就是合計並打印出每列的總值,以及表格中所有值的最終總和。我曾四處搜尋試圖找到答案,但沒有找到答案。查找列中所有值的總和[RNG]

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

老實說,不知道從哪裏即使有這樣的開始。任何幫助表示讚賞!

回答

0

由於已經順序地填充在銷售陣列與隨機整數值來表示順序顯示區它是然後在每個檢測到的通過所述陣列元件中的區域的數量的增量步進和求和的元件的簡單的事步。

要確定的地區將要顯示和地區的數目總計跟蹤,我們可以從包含在所述colNbr可變少1(5內的價值基礎它的實際數量 - 1 =將顯示4個區域)。

認識到這一點,我們宣佈尚未命名的另一個整數數組regionTotals,並給它長度爲4:

int[] regionTotals = new int[colNbr-1];

現在是通過銷售數組元素步進,總結正確的事銷售數組元素到合適區域總計元素,如下所示:

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"); 

將上面的代碼正上方totalNbr整型變量的聲明&初始化:

int totalNbr = 0; //Placeholder zero 

如何格式化regionTotals數組元素融入到你的表是你的,但請記住,該數組基於零,因此數組的索引0處的元素包含區域1的求和。