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.
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 "";
}
}