2016-12-29 116 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

相關問題