Saldações a todos, minha duvida é a seguinte eu estou estudando o controle da linguagem java,
if else if/else e tudo mais, até ai da pra desenrolar, mas eu ainda não entendo como diferenciar
o for do while, desde já eu agradeço a todos que me ajudarem, fuiiiiiiiiii!!!
no for vc sabe quantas vezes o loop vai acontecer e no while vc nao sabe quantas vezes ele vai acontecer… exemplo:
for(int cont=0;cont<10;cont++){
//vai contar de 0 a 9 ou seja 10 vezes
}
int b=20;
while(b!=10){
//ler assim:
/* enquanto b for diferente de 10 o que estiver
dentro do {} do while é executado*/
}
espero ter ajudado!!
O for tem um número determinado de vezes q sera executado
como :
String v[] = new String[10];
for(int i =0 ; i<10 ; i++){ // repete 10vzs
v[i] = JOptionPane.showInputDialg(null,"Digite um nome : ");
}
o while vc pode para-lo até que uma condição aconteça ;
String nome = new String();
boolean v = true;
while(v==true){//repete até que o nome seja vazio
nome = JOptionPane.showInputDialg(null,"Digite um nome : ");
if(nome.equals("")){ // esta vazio
v = false;
}
}
em portugol
for(int i = 0; i < 10; i++)
{
}
traduzindo
para ( inteiro i recebe 0; enquanto i menor que 10; i recebe i +1)
{
}
ou seja ele vai entrar em um looping, executando o que esta dentro das {}
cada vez que ele passa o valor de i aumenta 1;
int i =0;
while(i < 10)
{
i = i + 3;
}
praticamente a mesma coisa
se utiliza o for mais quando se sabe exatamente a quantidade de loopings que deseja fazer
o while se usa mais quando os valores que são comparados podem sofrer alterações
como no caso a variavel i esta recebendo seu valor mais um acrescimo de 3;
O “for” é uma espécie de “while”, tanto é que é definido como sendo equivalente a um comando “while”.
for (comando1; expressao2; comando3) {
comandos;
}
equivale a:
comando1;
while (expressao2) {
comandos;
comando3;
}
Sö reforçando o que o thingol disse, o exemplo do sydtpt poderia ser reescrito assim:
[code]
String nome = " ";
for (boolean v = true; v == true; v = !nome.equals(""))
{
nome = JOptionPane.showInputDialg(null,"Digite um nome : "));
}[/code]
Ou, ainda:
for (String nome=null; nome == null || !nome.equals("");
nome = JOptionPane.showInputDialg(null,"Digite um nome : ")) {}
Curiosidade: o comando "for" apareceu em linguagens de programação há muito mais tempo que o comando "while".
Ele apareceu no Fortran com o nome "DO" e servia para percorrer matrizes, entre outras coisas.
Exemplo de um código em Fortran (faz mais de 20 anos que não mexo mais em Fortran, acho que é assim):
X = 0
DO 20 I = 1, 10
X = X + I
20 CONTINUE
O seu equivalente em Java é:
x = 0;
for (int i = 1; i <= 10; ++i) {
x = x + i;
}
EDIT - para que serve o número 20? É um número de linha - isso é coisa do tempo dos dinossauros (ou seja, 50 anos atrás).
EDIT 2 - Esqueci que nas antigas versões do Fortran, não era possível endentar o código, e você não podia passar da coluna 80 sem usar uns truques. O correto seria:
C CALCULA A SOMA DOS NUMEROS DE 1 A 10
X = 0
DO 20 I = 1, 10
X = X + I
20 CONTINUE
Se não me engano você tem de começar o código na coluna 8 ou coisa parecida. Muito esquisito.
Mais uma curiosidade:
A partir do Java 5 temos o Enhanced For (ou ForEach, para os que assim preferem).
Assim como o while, ele pode ser usado quando você não sabe quantos vezes o loop será executado.
Contudo, o Enhanced For percorre TODO os elementos da Coleção ou Array.
Segue um exemplo:
for (String str : listaDeNomes) {
System.out.println(str);
}
Abraços a todos.
obrigado a todos que me ajudaram era isso mesmo que eu queria ,agora eu já posso dar um passo em diante, no controle de fluxo que é muito importante para quem esta começando a programas em Java, fuiiiiiiiii!!!.