0

だから私は私の大学のためにこのプロジェクトを持っていて、私はここで立ち往生しています.マトリックスデータベースに最大100を保存する必要があるため、このコードが1つ以上のスロットを保存するように心に留めていたすべてを試しました. すべてがうまく機能しますが、プログラムは常に最初の行を上書きし、2 行目に渡すことはありません...コードは次のとおりです。

予備部品方法:

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

1 に答える 1

1

次の行があるため、プログラムは毎回 1 から開始されます。

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

nループに入る前に 1 に初期化されます。(コメントに記載されているように、通常はnゼロに初期化しますが、ここでは問題ではありません。)

後で、まだ 1 のときにループから抜け出しますn。このコードを再度呼び出すと (関数内にあると仮定します)、nループの開始時に 1 に再初期化されます。n1 以外は決してそうではありません。

プログラムを実行するたびに 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...
}
于 2019-12-23T13:53:18.470 に答える