-1

フライト スケジュールをプログラムすることになっていて、ちょっとした問題に遭遇しました。

ユーザーは以下を挿入する必要があります: 出発日 (1 - 7、1 は週の最初の日、7 は週の最後の日を意味します)。出発時間 (0 - 24)。出発分 (0 - 60)。

次に : フライトの長さ (時間単位)。フライトの長さ (分単位)。

その後 : ユーザーは、上で挿入したデータに従って到着時刻を取得します。

何らかの理由で、入力すると:

出発時刻 : 1 日目 10 時 00 分。

飛行時間は 72 時間です。フライトの長さ (分 00 分)。

私が取得することになっているのは、4日目、10時間、00分です。取得するのは、1日目、49時間、10分です。

-- 編集 -- 新しいコードは次のとおりです。

import java.util.Scanner;
public class Flight
{
    public static void main (String [] args)
    {
        Scanner scan = new Scanner(System.in);

        System.out.println("Enter flight day: ");
        int FLYDAY = scan.nextInt();

        System.out.println("Enter flight hour: ");
        int FLYHOUR = scan.nextInt();

        System.out.println("Enter flight minute: ");
        int FLYMINUTE = scan.nextInt();

        int departureDay = scan.nextInt();
        int departureHour = scan.nextInt();
        int departureMin = scan.nextInt();

        departureMin += FLYMINUTE;
        while(departureMin >= 60) {
            departureHour++;
            departureMin-=60;
        }

        departureHour += FLYHOUR;
        while(departureHour >= 24)
        {
            departureDay++;
            departureHour-=24;
        }

        while(departureDay >=8)
        departureDay-=7;

        System.out.println("the supposed arrival time is: day- " + departureDay + ", hour- " + departureHour + ", minute- " + departureMin);
    }
}
4

2 に答える 2

1

これは宿題として親切に指摘してくださったので、答えは教えません (ただし、2 つの一般的なタイプのエラーといくつかのスタイルの問題に注意しました)。代わりに、自分で問題を見つけるためのツールをいくつか提供します。

まず、この単純なことのために、コンピューターのふりをしてみてください。これをする

  1. 紙の行全体に変数名を書きます。
  2. 各行を調べて、変数がどのように変化するかを理解できるかどうかを確認してください。

それがうまくいかない場合 (コンピューターが何をするかについてのあなたの理解が間違っていることが問題である場合もあります)、変数を (a) すべて読み取った後、および (b) 条件の各セットの間に出力できます。これを行うには、変数が読み取られた後、および各条件の後に System.println コマンドを (場合によっては変更を加えて) コピーします。

うまくいけば、それが答えを見つけるのに役立ちます。

于 2013-04-28T00:12:50.310 に答える
0

if ステートメントを while ステートメントに変更する必要があります。たとえば、次のように記述します。

while(departureMin >= 60) {
    departureHour++;
    departureMin-=60;
}

さらに、ユーザー入力セクションは非常に不安定です。より良い方法は次のとおりです。

Scanner scan = new Scanner (System.in);

System.out.println("Enter flight day: ");
int FLYDAY = scan.nextInt();

System.out.println("Enter flight hour: ");
int FLYHOUR = scan.nextInt();

System.out.println("Enter flight minute: ");
int FLYMINUTE = scan.nextInt();

フライトの所要時間を尋ねる場合も同じ形式に従ってください。

于 2013-04-28T00:12:32.780 に答える