停车场在矩阵中保存的行数不超过1行

问题描述 投票:0回答:1

所以我有一个专为大学设计的项目,我被困在这里,我想尽一切办法使该代码节省1个以上的插槽,因为我必须将100个存储到一个矩阵数据库中。一切正常,但是程序总是覆盖第一行,从不传递到第二行...这是代码:

保留部分方法:

for (n=1; n<100; n++) {

    parkinglot[n][0] = Integer.toString(n);
    parkinglot[n][1] = JOptionPane.showInputDialog(null, "License plate: ").toUpperCase();
    String hourofreservation = JOptionPane.showInputDialog(null, "Reservation hour(hh:mm): ");
    parkinglot[n][2] = hourofreservation;
    parkinglot[n][3] = formatter.format(date);
    parkingtime = Integer.parseInt(JOptionPane.showInputDialog(null, "Hours : "));
    parkinglot[n][4] = Integer.toString(parkingtime);
    int totalfee = (toMinutes(parkingtime)/30) * fee;
    pay(totalfee);
    //SaveReservation(nrinmat, parkinglot);
    //save
    JOptionPane.showMessageDialog(null, "This is yout reservation" + "\n\n" + " | " + parkinglot[n][0] + " | " + parkinglot[n][1] + " | " + parkinglot[n][2] + " | " + parkinglot[n][3] + " | " + parkinglot[n][4] + " HOURS |");

    break;

    }   

数据库方法:

public static String[][] database(String [][]parkinglot)
        {
            System.out.println("This is database");
            for (int i = 1; i < parkinglot.length; i++) {
                for (int j = 0; j < parkinglot[i].length; j++) {
                    System.out.print(parkinglot[i][j] + "\t");
                }
                System.out.println();
            }

            return parkinglot;
        }
java overwrite parking
1个回答
0
投票

您的程序每次都从1开始,因为您有此行:

for (n=1; n<100; n++)

它将在进入循环之前将n初始化为1。 (如注释中所述,通常您会将n初始化为零,但这不是您的问题。)

[稍后,当n仍为1时,您跳出循环。再次调用此代码(我假设它在函数中)时,它将在循环开始时将n重新初始化为1。因此,n只能是1。

如果每次运行该程序时只想填写一条记录,则根本不需要循环。您需要将n的值存储在某个位置(例如磁盘上或数据库中),然后在再次运行该程序时将其读回。或者,如果要将parkinglot的内容保存在某个地方并读回,则可以对其进行扫描(使用for循环)以找到第一个空条目,并将n初始化为该条目,例如:

int n = 1; // or 0
for (; n < parkinglot.length && parkinglot[n][0] != null; n++);
if (n < parkinglot.length) {
    populateParkingLotEntry(parkinglot, n);
} else {
    // No more slots left...
}
© www.soinside.com 2019 - 2024. All rights reserved.