Bloco while - Quero aprender definitivamente

6 respostas
F

A dúvida é boba pra maioria de vcs, mas ainda não entendi esses blocos em java.

1- Livro do Deitel não ajudou.
2- google não ajudou.
3- pesquisa no fórum não ajudou. Coloquei: "bloco while" e não apareceu nada relevante.
4- apostilas não ajudaram. Acabo de baixar mais uma, é do site Caelum, que aliás, foi graças a um dica que deram neste fórum.

Estou atirando pra todos os lugares a fim de aprender, porque realmente não tenho base.
Adaptei um código a partir de outro e aqui vai ele:

import java.util.*;
public class teste{
public static void main(String args[]){
	Scanner s= new Scanner(System.in);
	
	double n, Acumulador=0;
	

	do{//início do do
		System.out.println("Digite um numero maior do que zero");
	 n=s.nextDouble();
	 
	 if(n &gt 0){//início do if
	 	Acumulador=Acumulador+1;
	 	
	 	}//fim do if
	 	
	 	
	 }//fim do do.
	 while(n&gt1);
	 System.out.println("A media=" +Acumulador/2);


 }

}

6 Respostas

shison
Olá, O laço de repetição do-while executa tudo que está entre {} até que a condição entre () do while seja falsa. No seu caso, o código
System.out.println("Digite um numero maior do que zero");
 	 n=s.nextDouble();
 	 
 	 if(n > 0){//início do if
 	 	Acumulador=Acumulador+1;
 	 	
 	 	}//fim do if
será executado até que a expressão
(n&gt1)
seja falsa.

Um detalhe importante é que no laço do-while o bloco de código sempre é executado pelo menos uma vez, pois o teste é feito somente no final. Já no laço while (sem o do) as instruções podem nunca ser executadas pois o teste é feito antes de começar o bloco.

flw.

brunoccouto

Em respeito ao seu código:
Em loops nao é bom usar variáveis do tipo double!

Mas oq vc nao entende realmente de loops???

Um loop faz o seguinte:
executa uma ação enquanto determinada condição é verdadeira...

Por exemplo:

int x = 1;

while(x<10){
    System.out.println(x);
    x++;
}

Ou seja.... seu loop vai rodar nove vezes... porque enquanto o x nao for igual a 10 o loop nao para e sempre vai incrementando 1 a x.

Na primeira volta do loop vai acontecer o seguinte:
Vai escrever na saida:
1
e o x passará a valer dois e assim por diante até a condição nao satisfazer!

Deu pra ajudar ai???
Qualquer coisa envia a dúvida...

F

Enviei tópico duplicado. Ainda não tinha postado a dúvida. Em vez de "visualizar", apertei "postar". :oops:

O que não entendo é porque o fim da "}" tem que ser antes do "while" e não depois.

Por que isso não estaria certo?

do{//início do do
 		System.out.println("Digite um numero maior do que zero");
 	 n=s.nextDouble();
 	 
 	 if(n &gt 0){//início do if
 	 	Acumulador=Acumulador+1;
 	 	
 	 	}//fim do if
 	 	
 	 
 	 while(n &gt 0);
              }//fim do do.
F

Sim, eu sei, mas essas chaves do “do” “while” é que me confudem. Acho que é porque meus primeiros contatos com programação foi através de pseudolinguagem(portugol). Como lá não existe essa idéia de abre chaves, fecha chaves, fica meio estranho usar no java.

brunoccouto

Porque tudo que está entre as { } do “do” será executado por ele, e o while é o complemento de “do”(que deve conter um while) que vem logo depois do bloco para saber se ele dever ser executado novamente!

A assinatura da expressão do-while é assim:

do { } while(condicao);

se nao estiver assim será um erro de compilação.

[color=red]Exception in thread “main” java.lang.Error: Unresolved compilation problem:
Syntax error, insert “while ( Expression ) ;” to complete DoStatement[/color]

F

Certo… deu pra entender. Agora é praticar.

Obrigado.

Criado 9 de março de 2007
Ultima resposta 9 de mar. de 2007
Respostas 6
Participantes 3