【问题标题】:How do I add two different arrays and print the result?如何添加两个不同的数组并打印结果?
【发布时间】:2016-12-29 03:23:42
【问题描述】:

我必须制作一个数组来计算电影院的座位数,第二个 m2 代表另一个放映时间。我不知道如何将两个数组相加并打印这两个数组之和的结果。

这是 MovieSeats 测试器文件:

public class MovieSeatsTester
{

    public static void main(String[] args)
    {
        MovieSeats m = new MovieSeats(3,3);
        MovieSeats m2 = new MovieSeats(3,3);
        m.seating(0,0);
        m.seating(0,1);
        m.seating(1,0);
        m.seating(2,2);
        m.seating(2,2);
        m2.seating(0,0);
        m2.seating(0,0);
        m.print();
        m.reset();
        m2.print();
        m2.reset();
    }
}

这是 MovieSeats 文件:

public class MovieSeats
{
    private int attendance[][];

    public MovieSeats()
    {
    }

    public MovieSeats(int rows, int columns)
    {
        attendance = new int[rows][columns];        
    }

    public void seating(int r, int c)
    {   
        attendance[r][c] += 1;
    }

    public void print()
    {
    for (int r = 0; r < attendance.length; r++)
    {
        for (int c = 0; c < attendance.length; c++)
        {
            System.out.println("At row " + r + " col " + c + ", There are " +   attendance[r][c] + " Sitting here.");
        } 

    }
        System.out.println();
    }

    public void reset()
    {
    for (int r = 0; r < attendance.length; r++)
    {
        for (int c = 0; c < attendance.length; c++)
        {
            attendance[r][c] = 0;
        } 
    }
    System.out.println();
    }
}    

【问题讨论】:

标签: java arrays multidimensional-array


【解决方案1】:

我假设“添加两个不同的数组”是指“创建第三个数组,其中第三个数组中的每个元素都是前两个数组中每个数组的对应元素的总和。”

1。访问每个数组

为了将两个数组加在一起,您首先需要以某种方式访问​​每个数组。由于attendance 字段是private,您应该为它添加一个getter 方法到MovieSeats 类中。

获取attendance不带封装:

public int[][] getAttendance() {
    return attendance;
}

通过封装获取attendance

public int[][] getAttendance() {
    int rows = attendance.length();
    int cols = attendance[0].length();
    int[][] copy = new int[rows][cols];

    for(int i = 0; i < rows; i++)
        for(int j = 0; j < cols; j++)
            copy[i][j]=current[i][j];

    return copy;
}

2。按元素添加两个数组

接下来,一旦您可以访问同一位置的两个数组(可能在您的main 中),您就必须将它们加在一起。我建议将结果放在第三个数组中。添加这两个数组的最基本方法如下:

int[][] attendance1 = m.getAttendance();
int[][] attendance2 = m2.getAttendance();
int[][] sum = new int[3][3];

for (int i = 0; i < 3; ++i)
    for (int j = 0; j < 3; ++j)
        sum[i][j] = attendance1[i][j] + attendance2[i][j];

然后,您可以按座位打印总出席人数:

for (int i = 0; i < 3; ++i)
    for (int j = 0; j < 3; ++j)
        System.out.printf("Total Attendance for seat (%d,%d): %d\n",
                i, j, sum[i][j]);

现在,如果您想要将两个数组的所有元素相加为一个值,那么您可以执行以下操作。

对数组求和

int sum = 0;

int[][] attendance1 = m.getAttendance();
for (int i = 0; i < 3; ++i)
    for (int j = 0; j < 3; ++j)
        sum += attendance1[i][j];

int[][] attendance2 = m2.getAttendance();
for (int i = 0; i < 3; ++i)
    for (int j = 0; j < 3; ++j)
        sum += attendance2[i][j];

【讨论】:

  • 我如何打印出所有座位的总出席人数。例如,在 (0,0) 出勤 1 为 3,然后出勤 2 为 2,我想打印 5,因为这是该座位的总数。
  • @Susamp 很高兴它有效!请确保也支持我的回答
【解决方案2】:

您可以在 MovieSeat 类中添加以下方法:

public int sum() {
    int result = 0;
    for (int r = 0; r < attendance.length; r++) {
        for (int c = 0; c < attendance.length; c++) {
            result += attendance[r][c];
        }            
    }
    return result;
} 

然后调用sum方法,在main方法中求和:

MovieSeats m = new MovieSeats(3, 3);
MovieSeats m2 = new MovieSeats(3, 3);
m.seating(0, 0);
m.seating(0, 1);
m.seating(1, 0);
m.seating(2, 2);
m.seating(2, 2);
m2.seating(0, 0);
m2.seating(0, 0);
m.print();

System.out.println("sum: " + m.sum());
System.out.println("---");

m2.print();
System.out.println("sum: " + m2.sum());

System.out.println("total sum: " + (m.sum() + m2.sum()));
m.reset();
m2.reset();

注意在调用sum 方法后重置。

【讨论】:

  • 行中 System.out.println("在行" + r + " col " + c + ",有" +出席[r][c] + "坐在这里。")在我的 MovieSeats 课程中,它告诉我有多少人坐在一个特定的座位上。总而言之,如果它告诉有多少人曾经坐在那个特定的座位上,我将如何打印该行?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-15
  • 1970-01-01
  • 1970-01-01
  • 2014-07-03
  • 1970-01-01
  • 2022-11-17
相关资源
最近更新 更多