Dia da semana

Como faço pra ficar repetindo a mensagem “Digite um numero de 1 a 7” enquanto for diferente de zero:

import java.util.Scanner;

public class semana
{
		public static void main(String[] args) 
		{
			Scanner s = new Scanner(System.in);
			
			System.out.println("Digite um numero de 1 a 7");
			int i = s.nextInt();

			if (i == 1){
				System.out.println("Domingo");
			} else if (i == 2) {
				System.out.println("Segunda");
			} else if (i == 3) {
				System.out.println("Terça");
			} else if (i == 4) {
				System.out.println("Quarta");
			} else if (i == 5) {
				System.out.println("Quinta");
			} else if (i == 6) {
				System.out.println("Sexta");
			} else {
				System.out.println("Sábado");
			}

		}
} 

Basicamente, quando quiser repetir algo, use um loop.

Só um detalhe, do jeito que você fez, se a pessoa digitar qualquer número que não esteja entre 1 e 6, o programa diz que é sábado (por exemplo, digite 8, ou 10, ou ainda -1). Então além do loop, tem que melhorar a verificação. Algo assim:

Scanner s = new Scanner(System.in);
while (true) { // repete "indefinidamente"
    System.out.println("Digite um numero de 1 a 7 (ou 0 para sair)");
    int i = s.nextInt();
    if (i == 0) {
        break; // se digitar zero, sai do while
    } else if (i == 1) {
        System.out.println("Domingo");
    } else if (i == 2) {
        System.out.println("Segunda");
    } else if (i == 3) {
        System.out.println("Terça");
    } else if (i == 4) {
        System.out.println("Quarta");
    } else if (i == 5) {
        System.out.println("Quinta");
    } else if (i == 6) {
        System.out.println("Sexta");
    } else if (i == 7) {
        System.out.println("Sábado");
    } else {
        System.out.println("Valor inválido, deve estar entre 1 e 7");
    }
}

Claro que também daria para trocar por switch:

Scanner s = new Scanner(System.in);
while (true) { // repete "indefinidamente"
    System.out.println("Digite um numero de 1 a 7 (ou 0 para sair)");
    int i = s.nextInt();
    if (i == 0) {
        break; // se digitar zero, sai do while
    }

    switch (i) {
        case 1:
            System.out.println("Domingo");
            break;
        case 2:
            System.out.println("Segunda");
            break;
        case 3:
            System.out.println("Terça");
            break;
        case 4:
            System.out.println("Quarta");
            break;
        case 5:
            System.out.println("Quinta");
            break;
        case 6:
            System.out.println("Sexta");
            break;
        case 7:
            System.out.println("Sábado");
            break;
        default:
            System.out.println("Valor inválido, deve estar entre 1 e 7");
            break;
    }
}

Ou mais simples ainda, usar um array com os dias:

Scanner s = new Scanner(System.in);
String[] dias = {"Domingo", "Segunda", "Terça", "Quarta", "Quinta", "Sexta", "Sábado"};
while (true) { // repete "indefinidamente"
    // use o tamanho do array em vez de um valor fixo (assim, se mudar a lista de dias, o código não precisa mudar)
    System.out.printf("Digite um numero de 1 a %d (ou 0 para sair)\n", dias.length);
    int i = s.nextInt();
    if (i == 0) {
        break; // se digitar zero, sai do while
    } else if (1 <= i && i <= dias.length) {
        System.out.println(dias[i - 1]);
    } else {
        System.out.printf("Valor inválido, deve estar entre 1 e %d\n", dias.length);
    }
}

Assim eu acho melhor porque se a lista de dias mudar, o restante do código permanece igual (além de ficar mais sucinto).

1 curtida

Muito obrigado! :grinning: