8

我正在使用多维数组来存储特定销售人员(1 到 4 名销售人员)销售的产品总量(产品范围 1 到 5)。

T 将 salesPersons 排列在第 1 到第 4 行中,并将产品 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
4

4 回答 4

25

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
于 2013-03-18T20:53:44.110 回答
7

假设您有一个二维数组

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);
                }
            }
于 2014-12-30T12:32:07.263 回答
1

首先,如果不需要,不要使用所有代码。您只需要声明,也许还需要一个 for 循环。

遍历列:

for(int i=0; i<monthlySales[salesPerson].length; i++) {
    monthlySales[i][salesPerson]; //do something with it!
}
于 2013-03-18T21:11:12.020 回答
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
于 2013-03-19T20:11:40.777 回答