Array e laço do while

8 respostas
Evellyn

Gente, nos codigos abaixos deveriam ser impresso os dias da semana.
no que eu uso o while , cai num laço infinito, e no que eu uso do while não executa… vc me ajudam?
Usando while :

// laço infinito
Scanner input = new Scanner(System.in);
		String[] dias = { "Domingo", "Segunda-Feira", "Terça-Feira",
				"Quarta-Feira", "Quinta-Feira", "Sexta-Feira", "Sábado" };
		System.out.println("Digite 'dias' para começar: ");
		System.out.println("Digite 'Sair' para sair: ");
		String op = input.next();
		while (op.equals("dias")) {
			for (int i = 0; i < dias.length; i++) {
				System.out.println(dias[i]);
			}
		}
		System.out.print("Fim de execução");
	}
}

Usando do while :

String[] dias = { "Domingo", "Segunda-Feira", "Terça-Feira",
				"Quarta-Feira", "Quinta-Feira", "Sexta-Feira", "Sábado" };
		do {
			System.out.println(dias);
		}
		while (dias.equals("Sábado"));
			}
	}

8 Respostas

maschiojv

No primeiro troque while por if, no segundo use while (!dias.equals(“Sábado”))

Evellyn

pior que eu tenho que usar while!

S

Vc esta comparando se o objeto dias eh igual a Sábado
na verdade, vc tem que comparar o valor na posicao do array dias com o valor “Sábado”

Troque o while e coloque assim

int i = 0;

while (!dias[i].equals(Sábado)) {

System.out.println(dias[i]);

i++;

}
gilmarcand

Com o while você cai no laço infinito porque a condição que está nele será sempre true.
Não entendi muito bem porque você quer isto mas assim faz o que você quer:]

Scanner input = new Scanner(System.in);  
         String[] dias = { "Domingo", "Segunda-Feira", "Terça-Feira",  
                 "Quarta-Feira", "Quinta-Feira", "Sexta-Feira", "Sábado" };  
         System.out.println("Digite 'dias' para começar: ");  
         System.out.println("Digite 'Sair' para sair: ");  
         String op = input.next();
         int i = 0;
         while (op.equals("dias") && i<dias.length) {  
             System.out.println(dias[i]);
             i++;
         }    
         System.out.print("Fim de execução");

Não sei se isto é algum exercício de curso ou faculdade, mas lembre-se que você não está tratando a possibilidade do usuário digitar outra coisa sem ser “dias”. Neste caso se ele digitar qualquer coisa diferente de “dias”, o programa desvia para a instrução de imprimir “Fim de Execução”, portanto acho que acima poderia ser impresso: “Digite ‘dias’ para começar ou outro valor para sair:”

Espero ter ajudado.

Evellyn

Mto obrigada a tds, consegui fazer a que usa while.

Mas se alguem puder me orientar quanto ao do while, agradeço.

gilmaslima

Exemplo do while

boolean variavel = false;
do {                
            System.out.println("variavel >>>> " + variavel);    

            } while (variavel);

o loop do while sempre é executado pelo menos uma vez, mesmo que a expressão dentro do while seja false.
Primeiro ele executa, depois testa a condição.

flw!

Evellyn

sim, mas no meu caso… cm deve ser usado?

thiago.correa

Simple o objeto dias nunca vai ser igual ao objeto “Sábado” no teu caso a correta utilização do do while seria algo parecido com a instrução for, caso você queira imprimir todos os dias sa semana, vai depender do que você quer.

Vou assumir que você queira imprimir todos os dias da semana:

String[] dias = 
        { "Domingo", "Segunda-Feira", "Terça-Feira", "Quarta-Feira", 
          "Quinta-Feira", "Sexta-Feira", "Sábado" };
        int posicaoVetor = 0; //inicia o contador
        do {
            System.out.println(dias[posicaoVetor]);
        } while (++posicaoVetor < dias.length);
Criado 12 de fevereiro de 2009
Ultima resposta 12 de fev. de 2009
Respostas 8
Participantes 6