2017-02-25 8 views
0

4人のユーザーからの4つの入力を使用して会うのに最適な時間を見つけるプログラムを作成する必要があります。各ユーザーは、自分にとって最適な時間に応じて1,2または3を入力します。 1は8:00-12:00、2は12:00-18:00、および3は18:00-23:00です。プログラムの終わりには、最も多くのインプットを持っている時間が表示されます。または、2倍のインプットが等しい場合は、最も早いインプットが表示されます。ここで私は本当に何を使うべきかわかりませんが、最初は非常に長い一連のif文を使うことを考えましたが、実際にはうまくいきません。私はwhileステートメントを使用することに傾いていますが、それらを効果的に使用してユーザーからの入力を受け取り、その入力に応じて(1、2、または3なら)それをカウンタに追加しますどちらの時間が最もヒットしたかを知るために使用してください。どんな助けもありがとう! すべての入力に1つの変数を使用すべきですか?ループステートメントを使用してJava変数カウンタを増やす

Scanner kbd=new Scanner(System.in); 

    System.out.print("Meeting Times: \n"+"1) 8:00-12:00 2) 12:00-18:00 3) 18:00-23:00\n"); 
    System.out.print("\nChoose options 1, 2, or 3.\n"); 

    int p, morning=0, noon=0, evening=0; 
    String first = "8:00-12:00", second="12:00-18:00",third="18:00-23:00"; 

    while (p>4){ 
     System.out.print("Enter the best time available for person 1."); 
     p=kbd.nextInt(); 
     morning++; 
    }kbd.close(); 

答えて

0

p > 4の背後にある論理は何ですか?入力が必要な人が4人いることが分かっている場合は、単純なforループを使用できます。

for (int i = 0; i < 4; i++) { 
    System.out.print("Enter the best time available for person " + (i+1) + "."); 
    p=kbd.nextInt(); 
    if (p == 1) morning++; 
    else if (p == 2) noon++; 
    else if (p == 3) evening++; 
} 

ユーザーに人数を入力してintとして入力し、それに応じてループ条件を置き換えるようにユーザーに指示することもできます。我々はそれを2回呼び出す必要がありますので、我々はMath.maxを使用できる最大値を取得するには

は、しかし、それは2つのだけの入力値を取ります。

int max = Math.max(morning, Math.max(noon, evening)); 

をその後、我々は最終的に、ユーザへの応答を与えることができます。

if (max == morning) System.out.println("Morning is the way to go!"); 
else if (max == noon) System.out.println("Noon is the way to go!"); 
else System.out.println("Evening is the way to go!"); 

したい場合は、所定の入力が有効でない場合、あなたは新しい入力を要求することにより、例えば、機能へ追加することができます(例えばStringまたは範囲の数ではない)、おそらくそれは外ですあなたの範囲。

+0

これはまさに私が必要としていたものです。私はforループを間違って使用していたことに気付きませんでした。私の初期コードは、条件を設定する必要があると思っていたので、ユーザーの入力ではなく、朝を使用していました。あなたがしたのと同じ方法でforループを使用した後、私は必要なときにプログラムを実行することができました。どうもありがとうございました! – Ezz

関連する問題