2013-12-12 83 views
4

基本上我想在数组中存储关于列车的信息。我相信我需要使用2d数组。我似乎无法让它正常工作。我想要一个数组让我跟踪列车每辆车上空座位和预留座位的数量。这是为我工作吗?Java数组初学者混淆

int[][] seats = new int[4][10]; 
    for (int row = 0; row < 4; row ++) 
     for (int col = 0; col < 10; col++) 
      car[row][col] = 0; 

我想这只是初始化所有座位为0,表示他们是空的。我目前得到的分号的错误信息INT [4] [10],它说后“预计,{”

+0

上传堆栈跟踪 –

+1

@nAvEeDkHaN他得到一个编译错误,而不是运行一个 – A4L

+0

的'for'语句应该是一个代码块 – Reimeus

回答

1

的阵列(或ArrayList)试试这个,看看是否有帮助。我认为IDE正在寻找初始化语法,因为这就是你在循环中所做的。我可能会错误地知道发生了什么,但代码会为您编译。

int[][] seats = new int[4][10]; 
{ 
    for (int row = 0; row < 4; row++) { 
     for (int col = 0; col < 10; col++) { 
      seats[row][col] = 0; 
     } 
    } 
} 
4

你的代码是有效的,唯一的错误是car应该是seats

int[][] seats = new int[4][10]; 
for (int row = 0; row < 4; row++) 
    for (int col = 0; col < 10; col++) 
     seats[row][col] = 0; 
+0

是的,愚蠢的错误,但错误仍然存​​在。 – user2884621

+0

也许你的IDE误导你,尝试重新启动它(清除项目可能也有帮助) – 2013-12-12 19:47:14

2

那么你的第一个问题是,你有一个名为“席位”的数组,但你正试图初始化一个叫做“汽车”的东西。像这样的循环嵌套,不包括'{','}'来分隔它们至少是不好的风格,也可能让编译器感到困惑?下面的作品就像我的冠军。

int[][] seats = new int[4][10]; 
for (int rowIx = 0; rowIx < seats.length; rowIx++) { 
    for (int colIx = 0; colIx < seats[rowIx].length; colIx++) { 
     seats[rowIx][colIx] = 0; 
    } 
} 

...虽然它没有squigglies同样工作,但我觉得更难以阅读。我也认为你应该习惯于询问阵列的长度,而不是假定固定大小。那是什么在seat.length和座[rowIx] .length调用发生了什么。

0

使用基本的类来存储信息。

class TrainCar 
{ 
    private int _emptySeats; 
    private int _totalSeats; 

    public TrainCar(int total) 
    { 
     _totalSeats = total; 
     _emptySeats = total; 
    } 

    public bool fillSeats(int num) 
    { 
     _emptySeats -= num; 
     if(_emptySeats < 0) 
     { 
      _emptySeats += num; 
      return false; 
     } 
     return true; 
    } 

    public int getFilledSeats() 
    { 
     return _totalSeats - _emptySeats; 
    } 

    public int getEmptySeats() 
    { 
     return _emptySeats; 
    } 
} 

,然后只用了TrainCar类

TrainCar[] cars = new TrainCar[ NUM_CARS ]; 
for(int i = 0; i < cars.length; ++i) 
    cars[i] = new TrainCar(SEATS_PER_TRAINCAR); 
+0

我会这样做,但这是针对Android应用的。我需要在不同活动之间传递和操纵这些值。从我今天所了解到的情况来看,SharedPreferences是我这样做的方式,但只允许我使用原始数据类型。 – user2884621

0

在第四行,汽车需要更换座位。使用{}跟踪循环也是一种很好的形式,即使对于单行来说也是如此。

int[][] seats = new int[4][10]; 
for (int row = 0; row < 4; row ++) 
{ 
    for (int col = 0; col < 10; col++) 
    { 
     seats[row][col] = 0; 
    } 
}