[RESOLVIDO] Preciso criar um programa para exibir o dia da semana, o código seguinte não está rodando

Eu acho que o erro está neste calculo, ele compila tudo certo mas toda vez cai no default.

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

	int x, res;
	
	System.out.print("Dia: ");
	int dia = sc.nextInt();
	System.out.print("Mes: ");
	int mes = sc.nextInt();
	System.out.print("Ano: ");
	int ano = sc.nextInt();
	
	if(mes >= 3) {
		mes = mes-1;
		x = 8;
	}
	else {
		ano=ano-1;
		x=13;
	}
	
	res = (x + dia +(31 * mes/12)+((5*ano)/4)-(3*(1 + ano/100)/4));
			
	switch(res) {
	
	case 1: 
		System.out.println("DOMINGO");
	break;
	case 2:
		System.out.println("SEGUNDA-FEIRA");
	break;
	case 3: 
		System.out.println("TERÇA-FEIRA");
	break;
	case 4: 
		System.out.println("QUARTA-FEIRA");
	break;
	case 5: 
		System.out.println("QUINTA-FEIRA");
	break;
	case 6: 
		System.out.println("SEXTA-FEIRA");
	break;
	case 0: 
		System.out.println("SÁBADO");
	break;
	
	default:
		System.out.println("Valor invalido");
		break;
	}
	
	sc.close();
}

Quem poder me ajuda agradeço, não precisa usar a Classe Date().

Tu estás certo, o “erro” está no calculo, e é fácil de visualizar, se você printar seu calculo (res), logo verás que o resultado não se encaixa em nenhuma das cláusulas case do switch, por isso, só cai no default.

System.out.println(res)

abraço!

1 curtida

Muito obrigado pela atenção deu certo aqui.

Meus parabéns :tada:
Põe a tag [RESOLVIDO], também seria legal postar o calculo correto!

Abraços!

1 curtida

@Wesleygomes, aproveite e marque a resposta do nosso caro amigo @Tuna como sendo a solução do tópico :wink:

public class ProgramaDiaSemana {

public static void main(String[] args) {
	Scanner sc = new Scanner(System.in);
	System.out.print("informe uma data DD/mm/aaaa: ");
	String data = sc.nextLine();

	System.out.println("Dia da Semana: " + diaSemana(data));

	
	sc.close();
}

public static String diaSemana(String data) {

	String[] arrayData = data.split("/");

	int dia = Integer.parseInt(arrayData[0]);
	int mes = Integer.parseInt(arrayData[1]);
	int ano = Integer.parseInt(arrayData[2]);
	int x;
	if (mes >= 3) {
		mes = mes - 2;
		x = 8;
	} else {
		ano = ano - 1;
		x = 13;

	}
	
	int resto = (x + dia + (31 * mes / 12) + ((5 * ano) / 4) - (3 * (1 + ano / 100) / 4)) % 7;

	switch (resto) {
	case 1:
		return "Domingo";
	case 2:
		return "Segunda-feira";
	case 3:
		return "Terça-feira";
	case 4:
		return "Quarta-feira";
	case 5:
		return "Quinta-feira";
	case 6:
		return "Sexta-feira";
	case 0:
		return "Sábado";
	default:
		return "";

	}
}

[RESOLVIDO]