2016-12-29 52 views
-4

我不得不做一个数组,计算电影院的座位,第二级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(); 
    } 
}  
+1

你是什么意思的“添加两个不同的数组”?你也可能想写一个[mcve]。这里的很多代码与问题无关。 – 4castle

+0

使用您编写的重置方法作为指导来生成您的总和,例如sum = sum + attendance [r] [c] – RamblinRose

+1

[我怎样才能在Java中连接两个数组?](http://stackoverflow.com/questions/80476/how-can-i-concatenate-two-arrays-in-java) – dreamer

回答

0

我假定由“添加两个不同的阵列”你的意思是“创建的第三阵列,其中每个元素在第三个数组中是前两个数组中每个数组的相应元素的总和。“

1.访问每个阵列

为了将两个数组加在一起,你首先需要访问每个阵列莫名其妙。由于attendance字段为private,因此应该为其添加一个获取方法,以便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,0)在考勤1中是3,然后在考勤2中是2,并且我想打印5,因为那是该座位的总数。 – Susamp

+0

我测试了所有这一切,它的工作原理。谢谢! – Susamp

+0

@苏普很高兴它的作品!请确保在我的答案upvote – Travis

0

您可以在下面的方法添加到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(); 

在您拨打后要重置注意事项方法。

+0

行System.out.println(“在行”+ r +“col”+ c +“,有”+出席[r] [c] +“坐在这里。 “)在我的MovieSeats类中,它告诉我有多少人坐在特定的座位上。总的来说,我怎么会打印这一行呢?它告诉有多少人曾经坐过那个特定的座位? – Susamp

相关问题