Podstawy- instrukcja switch

0

Witam.

Czy kod poniżej da się jakoś skrócić?? np. żeby case 1 działał dla miesięcy które są 31 dniowe case 2 dla 30 dniowych i case 3 dla wyjątku lutego?? Bo nie wiem jak to zrobić ?

 void ileDniMaMiesiac(){
		 switch(m){
		 	case 1:
		 		System.out.println("Ten miesiąc ma 31 dni");
		 		break;
		 	case 2:
		 		System.out.println("Ten miesiąc ma 30 dni");
		 		break;
		 	case 3:
		 		System.out.println("Ten miesiąc ma 31 dni");
		 		break;
		 	case 4:
		 		if(czyPrzestepny()){
		 			System.out.println("Ten meisiąc ma 29 dni");
		 		}
		 		else{
		 			System.out.println("Ten miesiąc ma 28 dni");
		 		}
		 		break;
		 	case 5:
		 		System.out.println("Ten miesiąc ma 31 dni");
		 		break;
		 	case 6:
		 		System.out.println("Ten miesiąc ma 30 dni");
		 		break;
		 	case 7:
		 		System.out.println("Ten miesiąc ma 31 dni");
		 		break;
		 	case 8:
		 		System.out.println("Ten miesiąc ma 31 dni");
		 		break;
		 	case 9:
		 		System.out.println("Ten miesiąc ma 30 dni");
		 		break;
		 	case 10:
		 		System.out.println("Ten miesiąc ma 31 dni");
		 		break;
		 	case 11:
		 		System.out.println("Ten miesiąc ma 30 dni");
		 		break;
		 	case 12:
		 		System.out.println("Ten miesiąc ma 31 dni");
		 		break;
		 }
	 }	
1

Da się, ale do tego trzeba pomyśleć. Nie wiem od kiedy 4 miesiąc to luty. Zawsze mnie uczyli że 2...

1

Calendar.getInstance().getActualMaximum(Calendar.DAY_OF_MONTH)

0

No tak luty to drugi :P jakieś zaćmienie :D, ale za pomocą switcha to się tak da ?

0

Da się, ale chyba wygodniej byłoby tu użyć ifa jakieś jednak.

1

Funkcja powinna raczej zwracać ilość dni w miesiącu, a nie zajmować się wypisywaniem na ekran.

int howManyDays(int month, int year)
{
  int days=28;
  switch(month)
  {
      case 1:
      case 3:
      case 5:
      case 7:
      case 8:
      case 10;
      case 12:
          days=31;
          break;
      case 4:
      case 6:
      case 9:
      case 11:
          days=30;
          break;
      default:
          if(isLeapYear(year))
              days=29;        
  }
  return days; 
}

Funkcję isLeapYear() musisz sobie napisać sam.

0

o dzięki o to mi chodziło wykładowca odradzał nam %2 bo jest zbyt dużo wyjątków

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.