我使用多维数组来存储特定销售人员(1到4名销售人员)销售的产品总量(产品范围1到5)。
T将salesPersons排列在第1行到第4行,将Product ID排列在第1到5列。
我唯一不能做的就是遍历各行以获得每个产品的总数,即第1列:第1行到第4行的总和=总产品1,第2列:第1行到第4行的总和=产品2总计等
请参阅测试salesTest应用程序代码,然后是Sales类:
/*
test application for sales class
*/
package salestest;
import SalesLibary.Sales;
public class SalesTest {
public static void main(String[] args) {
// pass monthly stats to 4r(salespesons) * c5(products 1 to 5) using initialization method
int monthlySales [][]= {{13, 23, 45, 67, 56},
{43, 65, 76, 89, 90},
{43, 45, 76, 98, 90},
{34, 56, 76, 43, 87}};
//pass default values to constructor when creating object of class
Sales companySales = new Sales("Monneys Inc.", monthlySales);
companySales.displayMessage();
companySales.displaySales();
}//end main
}//end SalesTest class
//class Sales with associated methods
/*
Chapter 7: Practical Question 2
*/
package SalesLibary;
public class Sales {
//declare fields/members
private int salesTotals[][];
private String companyName;
//passs string and two dimensional array of sales stats to constructor from application object
public Sales(String name, int monthlySales[][]) {
companyName = name;
salesTotals = monthlySales;
}//end constructor
public void setCompanyName(String name) {
companyName = name;
}
public String getCompanyName() {
return companyName;
}
public void displaySales() {
//table heading
System.out.printf("The monthly sales stats for company %s are: ", companyName);
System.out.println(" ");//set columns headings
//create column headings representing products sold 1 to 5 by looping thru each colmn of row(salsperson)
System.out.print(" ");
for (int product = 0; product < salesTotals[0].length; product++) {
System.out.printf("Product %d ", product + 1);
}
System.out.println("Total ");
//create rows of table represnting salespersons 1 too 4, ten loop through array and print element
for (int salesPerson = 0; salesPerson < salesTotals.length; salesPerson++) {
System.out.printf("SalesPerson %2d", salesPerson + 1);
//use nested for loop to output all results
for (int total : salesTotals[salesPerson]) {
System.out.printf("%10d", total);
}
//call method to get total for each sales person by passing
//a row of products sold for each sales person to method
double total = getTotal(salesTotals[salesPerson]);
System.out.printf("%10.2f\n", total);
}//end outer for
System.out.println("Product Total: ");
double productSum = getTotalProduct();
System.out.printf("%10.2f", productSum);
//enumerate through each column and get sum to represent product total
}//end method Display sales
//method to calculate total, argument is array of results
public double getTotal(int salesTotals[]) {
int total = 0;
//loop thru array passed
for (int count : salesTotals) {
total += count;
}
return total;
}// end get salesPerson tital
//display message
public void displayMessage() {
System.out.printf("\nWlecome to %s monthly sales summaries!!!\n\n", getCompanyName());
}//end display message
//get total product sold
public double getTotalProduct() {
int productTotal[];
int totalProduct = 0;
//loop through array passed
for (int salesPerson = 0; salesPerson < salesTotals.length; salesPerson++) {
//go through each column of row[row]
productTotal = salesTotals[salesPerson];
//loop thirugh product total and get sum
for (int count : productTotal) {
totalProduct += count;
}
}//end outer for loop
return totalProduct;
}// end get salesPerson total
}//end Sales class
答案 0 :(得分:21)
迭代二维数组中的单行k
:
for (int j = 0; j < multiarray[k].length; j++)
multiarray[k][j]; // do something
迭代二维数组中的单个列k
:
for (int i = 0; i < multiarray.length; i++)
multiarray[i][k]; // do something
答案 1 :(得分:6)
假设你有一个二维数组
int[][] salesData={{13, 23, 45, 67, 56},
{43, 65, 76, 89, 90},
{43, 45, 76, 98, 90},
{34, 56, 76, 43, 87}};
所以它是一个4 * 5矩阵
int [0]代表第一行,即{13,23,45,67,56},如果您需要单个单元格中的值,则需要为每个循环迭代2,如
for (int[] rowData: salesData){
for(int cellData: rowData)
{
System.out.printn("the indiviual data is" +cellData);
}
}
答案 2 :(得分:1)
首先,如果不需要,请不要使用所有代码。你只需要声明,也许只需一个for循环。
循环列:
for(int i=0; i<monthlySales[salesPerson].length; i++) {
monthlySales[i][salesPerson]; //do something with it!
}
答案 3 :(得分:0)
知道了:) 有点像海难试图想象阵列,但最终到达那里,欢呼帮助
//loop thorugh each column to get total products sold
for (int product = 0; product < salesTotals[0].length; product++) {
int totalProduct = 0;
for (int salePerson = 0; salePerson < salesTotals.length; salePerson++) {
totalProduct += salesTotals[salePerson][product];
}//end inner for
System.out.printf("%10d", totalProduct);
}//end outer for