Java数组初学者混乱

时间:2013-12-12 19:34:01

标签: java arrays multidimensional-array

基本上我想在阵列中存储有关火车的信息。我相信我需要使用二维数组。我似乎无法让它正常工作。我想要一个阵列,让我跟踪火车每辆车上空座位和预留座位的数量。这对我有用吗?

    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]之后的半冒号上收到一条错误消息,它说“预期,{”

6 个答案:

答案 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;

答案 1 :(得分:2)

那么你的第一个问题是你有一个名为“seat”的数组,但你正在尝试初始化一个名为“car”的东西。像这样的循环嵌套而不包括'{','}来划分它们至少是坏的风格,并且可能让编译器感到困惑?以下作为我的冠军。

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;
    }
}

......虽然没有波浪线但它的效果同样好但我觉得更难读。我也认为你应该习惯于询问阵列的长度,而不是假设固定大小。这就是seat.length和seat [rowIx] .length调用中发生的事情。

答案 2 :(得分:1)

尝试一下,看看它是否有帮助。我认为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;
        }
    }
}

答案 3 :(得分: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类的数组(或ArrayList

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

答案 4 :(得分: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;
    }
}

答案 5 :(得分:-1)

这里不遵循循环语句的语法:需要大括号!

tutorial explaining the syntax