Lista o número de dias em cada um dos 12 meses do ano (ignorando anos anos bissêxtos)

5 respostas
Tiarlis

E ai pessoal… :?: :?: :?:
Gostaria que alguem me ajudasse a fazer um Programa um applet que lista na tela o número de dias em cada um dos 12 meses do ano (ignorando anos bissêxtos).
Ja tentei assim: :arrow:

import java.applet.*; import java.awt.*; public class MesApplet extends Applet{ public void init(){ for(int n = 1; n <= 12; n++){ int ndias=31; switch (n){ case 2: ndias = 28; break; case 4: case 6: case 9: case 11: ndias = 30; } add( new Label( "Més " + n + " : " + ndias + " dias" ) ); } } }

Tranquilo…Gostaria que alguem me ajudasse a criar uma outra forma de desenvolver esse codigo…Uma forma diferente do switch…
Se puderem ajudar agradeço desde ja …

5 Respostas

ramonchiara

Por que não usa um array para isso?

int[] diasDoMes = new int[] {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

aí, depois, no seu Label:

add(new Label("Mês " + n + “: " + diasDoMes[n-1] + " dias”));

[]s

lgmhorus
Calendar cal = Calendar.getInstance();
			cal.set(Calendar.MONTH, Calendar.JANUARY);
			
			for(int i=0;i<12;i++){				
				System.out.println("Mês " + (i+1) + " : " + cal.getActualMaximum(Calendar.DAY_OF_MONTH) + " dias");
				cal.add(Calendar.MONTH, 1);
			}

Vai mostrar fevereiro com 29, pq esse ano é bissexto, mas você pode dar um set para um ano não-bissexto se quiser evitar.

Tiarlis

Valeu pessoal vou tentar!!!

Tiarlis

E ai Galera…como estou começando, ja vou complicando…
Com a ajuda de vcs, mais inumeras tentativas funcionou…Mas o cod ficou bem maior…bele, oque importa eh aprender
Valeu

import java.applet.*; 
import java.awt.*; 
import java.util.*; 
public class MesApplet extends Applet{
	public void init(){ 
				
		for(int i=1;i<13;i++){
			Calendar cal = Calendar.getInstance();
			switch (i){

			case 1:
				cal.set(Calendar.MONTH, Calendar.JANUARY);
				break;
			case 2:
				cal.set(Calendar.MONTH, Calendar.FEBRUARY);
				break;
			case 3:
				cal.set(Calendar.MONTH, Calendar.MARCH);
				break;
			case 4:
				cal.set(Calendar.MONTH, Calendar.APRIL);
				break;
			case 5:
				cal.set(Calendar.MONTH, Calendar.MAY);
				break;
			case 6:
				cal.set(Calendar.MONTH, Calendar.JUNE);
				break;
			case 7:
				cal.set(Calendar.MONTH, Calendar.JULY);
				break;
			case 8:
				cal.set(Calendar.MONTH, Calendar.AUGUST);
				break;
			case 9:
				cal.set(Calendar.MONTH, Calendar.SEPTEMBER);
				break;
			case 10:
				cal.set(Calendar.MONTH, Calendar.OCTOBER);
				break;
			case 11: 
				cal.set(Calendar.MONTH, Calendar.NOVEMBER);
				break;
			case 12:
				cal.set(Calendar.MONTH, Calendar.DECEMBER);

			}

			add( new Label( "Mês " + (i) + " : " + cal.getActualMaximum(Calendar.DAY_OF_MONTH) + " dias" ) );
		}
	}
}
lgmhorus

Tiarlis, não precisa desse switch não. O Calendar já considera os meses sequencialmente, então aquele for simples que eu fiz resolve seu problema. Só ao invés de fazer o for de 1 a 12, faz de 0 a 11, e quando for exibir, exibe i+1. Muito mais simples e limpo seu código.

Criado 10 de julho de 2008
Ultima resposta 11 de jul. de 2008
Respostas 5
Participantes 3