2016-02-18 2 views
1

Я довольно новичок в Java и кодирую в целом. В моем классе нам нужно, чтобы пользователь вводил месяц (1-12) и день (1-30), и мы определяем дату набора (с 15 июня до 30-го), если это сезон или не сезон муссонов. Я пытаюсь использовать оператор if else в коммутаторе, чтобы сказать, что в любое время до 15 июня не сезон муссонов, но мой код продолжает показывать инструкции if и else. Любая помощь приветствуется, спасибо!Использование java - использование if else в коммутаторе?

import java.util.*; 

public class Monsoon 

{ public static void main (String[]args) 
    { 
    Scanner kb = new Scanner (System.in); 



    // Prompt the user to enter month & Day 
    System.out.print("Please enter a month(1-12) and day (1-31): "); 
    int month = kb.nextInt(); 
    int day = kb.nextInt(); 


    // using a switch statement to show months 
    switch (month){ 
     case 1: 
      System.out.println("is NOT monsoon season"); 
      break; 
     case 2: 
      System.out.println("is NOT monsoon season"); 
      break; 
     case 3: 
     System.out.println("is NOT monsoon season"); 
      break; 
     case 4: 
      System.out.println("is NOT monsoon season"); 
      break; 
     case 5: 
      System.out.println("is NOT monsoon season"); 
      break; 
     case 6: 
      System.out.println("“is monsoon season"); 

      // use if else statement so user knows that before june 15 is not monsoon season 
     if (day>=15) 
      System.out.print("it is monsoon season"); 
     else 
      System.out.print("it is not monsoon season"); 


      break; 
     case 7: 
      System.out.println("“is monsoon season"); 
      break; 
     case 8: 
      System.out.println("“is monsoon season"); 
      break; 
     case 9: 
      System.out.println("“is monsoon season"); 
      break; 
     case 10: 
      System.out.println("is NOT monsoon season"); 
      break; 
     case 11: 
      System.out.println("is NOT monsoon season"); 
      break; 
     case 12: 
      System.out.println("is NOT monsoon season"); 
      break; 

     default: System.out.println("not valid"); 
     break; 

    } 

} 

}

+2

Хорошо, что вы * безоговорочно * печатаете «сезон муссонов», прежде чем печатать «сезон муссонов» или «это не сезон муссонов». –

+0

Спасибо за помощь! – cargoboom

ответ

3

Повторение плохо. Вы можете сделать это, как это, используя fall-through особенности выключателя корпуса:

boolean isMonsoon; 

switch (month) { 
    case 7: 
    case 8: 
    case 9: 
     isMonsoon = true; 
     break; 

    case 1: 
    case 2: 
    case 3: 
    case 4: 
    case 5: 
    case 10: 
    case 11: 
    case 12: 
     isMonsoon = false; 
     break; 

    case 6: 
     // use if else statement so user knows that before june 15 is not monsoon season 
     if (day >= 15) 
      isMonsoon = true; 
     else 
      isMonsoon = false; 
     break; 

    default: 
     System.out.println("not valid"); 
     break; 
} 

if (isMonsoon) 
    System.out.println("is monsoon season"); 
else 
    System.out.println("is NOT monsoon season"); 

Или, так как сезон дождей является диапазоном, используя операторы сравнения, вероятно, более подходящий, чем выключатель случае:

+2

Для обучения начинающих, то, что происходит здесь, заключается в том, что наличие нескольких случаев в строке без разрыва между ними приводит к тому, что программа продолжает работать во всех случаях, пока не достигнет перерыва (или конца коммутатора). Это называется «падающим» случаем. –

+0

Спасибо, что объяснили мне это, я ценю следующее: – cargoboom

Смежные вопросы