【问题标题】:2D array help on how to match and covert to string关于如何匹配和转换为字符串的二维数组帮助
【发布时间】:2013-12-25 01:38:45
【问题描述】:

我必须编写这个类来记录飞机的座位安排我的两种方法有问题,这些方法说:

  • makeReservation(id, request)——这个方法直接访问席位来判断席位是否已经被占用。如果没有,请在席位中记录该位置的id。如果您进行了预订,则返回 true,如果已预订,则返回 false,
  • getAssignment(id) — 按行和列搜索,直到在席位中找到匹配的 ID,然后将行和列转换为字符串(例如,seats[5][2] == id 应该返回“6C”。

我该怎么做? 到目前为止,这是我的代码:

import java.util.ArrayList;

class Plane {
private int[][] seats;
String flight;
String departure;

public Plane(String name, String leaving, int length, int width) {
    flight = name;
    departure = leaving;
    for (length = 0; length < 22; length++)
        for (width = 0; width < 5; width++)
            seats[length][width] = -1;
}

public String getFlight() {
    return flight;
}

public String getDepartureTime() {
    return departure;
}

public void setDepartureTime(String newTime) {
    this.departure = newTime;
}

public boolean makeReservation(int id, AvilaNatalyPassenger request) {
    boolean status = true;
    ArrayList<Integer> inputValues = new ArrayList<Integer>();
    for (int i = 0; i < 22; i++) {
        for (int j = 0; j < 5; j++) {
            id = seats[i][j];
            if (id != -1) {
                if (inputValues.contains(id)) {
                    status = false;
                    break;
                } else {
                    inputValues.add(id);
                    // for(int x = 0; x < inputValues.size; x++)
                    // for(int y = 0; y < inputValues[x].size; y++)
                    // inputValues[x][y] = seats[x][y];

                }
            }
        }
    }

    return status;
}

public int getId(int row, int seat) {
    if (row >= 0 && row < seats[0].length && seat >= 0
            && seat < seats.length) {
        return seats[row][seat];
    } else {
        return -1;
    }
}

public String getAssignment(int id){
    for (



    }
}

【问题讨论】:

    标签: java class methods multidimensional-array


    【解决方案1】:

    用字母声明一个静态数组

    private static String[] ALPHABET = new String[]{"A", "B", "C", ..., "Z"};
    
    ...
    
    public String getAssignment(int id)
    {
    
    for (int i = 0; i < 22; i++)
        for (int j = 0; j < 5; j++)
          if (seats[i][j] == -1) return new String((j+1) + ALPHABET[i]);
    
    }
    

    【讨论】:

    • 看看我应该返回的是 1-21 的数字和来自 AD 的字母,所以它应该返回 12D、4C ......这就是我的班级应该是什么样子:飞机 - 座位: int [][] - 航班: String - 出发: String + Plane(name: String, 离开: String, length: int, width: int) + getFlight(): String + getDepartureTime(): String + setDepartureTime(newTime: String) + makeReservation(id: int, request: Passenger): Boolean + getID(row: int, seat: int): int + getAssignment(id: int): String
    猜你喜欢
    • 2021-01-28
    • 2019-01-23
    • 2018-08-08
    • 2017-07-11
    • 1970-01-01
    • 1970-01-01
    • 2020-02-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多