2017-05-01 6 views
0

私は初心者のコーダーであり、私は星座を決定するプロジェクトに取り組んでいます。有効な入力のための無効な入出力を受信しました

問題:「他に場合は、」利用者ではなく、例えば、月ジェミニ日付の「であれば、」ステートメントに入力された月と日付に基づいてホロスコープを決定正確にさかのぼります。私は5月21日から5月31日の間に入力された日付について無効な入力を受けます。私はそのケースを書き直そうとしましたが、まだ問題があります。

誰かが私が知らない何かを見て私に知らせてもらえれば、私は非常に感謝しています。ありがとう!

switch (month) { 

    case 1: 
     if (month == 12 && day >= 22 && day <= 31) 
      zodiac = "Capricorn"; 
     else if (month == 01 && day < 20) 
      zodiac = "Capricorn"; 
     else 
      zodiac = "Invalid Input"; 
     break; 
    case 2: 
     if (month == 1 && day >= 20 && day < 32) 
      zodiac = "Aquarius"; 
     else if (month == 2 && day < 19) 
      zodiac = "Aquarius"; 
     else 
      zodiac = "Invalid Input"; 
     break; 
    case 3: 
     if (month == 2 && day >= 19 && day <= 29) 
      zodiac = "Pisces"; 
     else if (month == 3 && day < 21) 
      zodiac = "Pisces"; 
     else 
      zodiac = "Invalid Input"; 
     break; 
    case 4: 
     if (month == 3 && day >= 21 && day < 32) 
      zodiac = "Aries"; 
     else if (month == 4 && day < 20) 
      zodiac = "Aries"; 
     else 
      zodiac = "Invalid Input"; 
     break; 
    case 5: 
     if (month == 4 && day >= 20 && day < 31) 
      zodiac = "Taurus"; 
     else if (month == 5 && day < 21) 
      zodiac = "Taurus"; 
     else 
      zodiac = "Invalid Input"; 
     break; 
    case 6: 
     if (month == 5 && day >= 21 && day < 32) 
      zodiac = "Gemini"; 
     else if (month == 6 && day < 21) 
      zodiac = "Gemini"; 
     else 
      zodiac = "Invalid Input"; 
     break; 
    case 7: 
     if (month == 6 && day >= 21 && day < 31) 
      zodiac = "Cancer"; 
     else if (month == 7 && day < 23) 
      zodiac = "Cancer"; 
     else 
      zodiac = "Invalid Input"; 
     break; 
    case 8: 
     if (month == 7 && day >= 23 && day < 32) 
      zodiac = "Leo"; 
     else if (month == 8 && day < 23) 
      zodiac = "Leo"; 
     else 
      zodiac = "Invalid Input"; 
     break; 
    case 9: 
     if (month == 8 && day >= 23 && day < 32) 
      zodiac = "Virgo"; 
     else if (month == 9 && day < 23) 
      zodiac = "Virgo"; 
     else 
      zodiac = "Invalid Input"; 
     break; 
    case 10: 
     if (month == 9 && day >= 23 && day < 31) 
      zodiac = "Libra"; 
     else if (month == 10 && day < 23) 
      zodiac = "Libra"; 
     else 
      zodiac = "Invalid Input"; 
     break; 
    case 11: 
     if (month == 10 && day >= 23 && day < 32) 
      zodiac = "Scorpio"; 
     else if (month == 11 && day < 22) 
      zodiac = "Scorpio"; 
     else 
      zodiac = "Invalid Input"; 
     break; 
    case 12: 
     if (month == 11 && day >= 22 && day < 31) 
      zodiac = "Sagittarius"; 
     else if (month == 12 && day < 22) 
      zodiac = "Sagittarius"; 
     else 
      zodiac = "Invalid Input"; 
     break; 
+0

はあなたをされていることを確認それが唯一の場所である:ケース1では、月など...私はこのような何かにあなたのスイッチ・ステートメントにロジックを書き換えるために、あなたをお勧めしたい

、1でありますあなたは期待される出力を得られないでしょうか?私はもう少し '' Invalid Input ''sを期待しています –

+0

私はランダムにいくつか行いましたが、実際には私は今それらを使って倍増しています。 –

+1

switch文の中で、月は常に大文字と同じになります。だから、このようなチェックは:case 1:if(month == 12) 'は常に失敗するでしょう。 –

答えて

1

switch文の中で、設定したケースで月のチェックが完了しています。

switch (month) { 

case 1: // --> month == 1 here 
    if (day < 20) { 
     zodiac = "Capricorn"; 
    } else if (day >= 20 && day <=31) { 
     zodiac = "Aquarius"; 
    } 
case 2: // --> month == 2 here 
    if (day < 19) { 
     zodiac = "Aquarius"; 
    } else if (day >= 19 && day <= 29) 
     zodiac = "Pisces"; 
    break; 

    // etc 
} 
関連する問題