[Resolvido] Que tipo de REPETIÇÃO usar?

rsrs…desculpe, uma variavél chamada “blz” foi ótimo.
Mas concordo, isso resolve seu problema!

Abraços.

[quote=nel]rsrs…desculpe, uma variavél chamada “blz” foi ótimo.
Mas concordo, isso resolve seu problema!

Abraços.[/quote]

Hehe. Eu até imaginei que a variavel blz soaria estranho, apesar de entrar no contexto, mas achei na verdade que haveria outros questionamentos, tipo try/catch dentro do while (causa polêmica) e o último println que usa a variável nota em vez da num.

Mas é isso ae… Abraço!

[quote=Vingdel][quote=nel]rsrs…desculpe, uma variavél chamada “blz” foi ótimo.
Mas concordo, isso resolve seu problema!

Abraços.[/quote]

Hehe. Eu até imaginei que a variavel blz soaria estranho, apesar de entrar no contexto, mas achei na verdade que haveria outros questionamentos, tipo try/catch dentro do while (causa polêmica) e o último println que usa a variável nota em vez da num.

Mas é isso ae… Abraço![/quote]

Não vejo problema/polêmica para um try-catch em um While nesse caso. É algo “simples” e um tratamento básico de número.
Ele até poderia usar um regex (algo como [0-9]) e testar se é verdadeiro isso, caso não fosse, não seria um número válido.

Sobre os nomes dados as variavéis, foi apenas um exemplo de como resolver o problema, e resolveu.
Depois, ele escolhe os nomes adequados, certo?

Abraços amigo.

O polemico que digo é quanto a usar o try/catch dentro ou fora do loop, uns defendem o uso fora já outros defendem o uso dentro do loop. Nesse caso aí, incusive, a variável blz foi um recurso que tive que adotar devido ao tratamento da exceção, pois se eu não fosse trata-la eu simplesmente poderia usar como condição para o while num < 10. Já caso eu utilizasse o do/while dentro do try eu teria que fazer de outra forma.

Agora quanto ao uso da variável, usei nota no último println pelo mesmo motivo de eu ter criado a variável blz, pois se eu usasse num iria dar erro. Por ela estar sendo inicializada dentro do try.

Veja o erro:C:\Users\Delano\Desktop>javac aa.java aa.java:24: variable num might not have been initialized System.out.println("O numero "+num+" esta OK"); ^

Você conseguiu perceber isso?

[quote=Vingdel]O polemico que digo é quanto a usar o try/catch dentro ou fora do loop, uns defendem o uso fora já outros defendem o uso dentro do loop. Nesse caso aí, incusive, a variável blz foi um recurso que tive que adotar devido ao tratamento da exceção, pois se eu não fosse trata-la eu simplesmente poderia usar como condição para o while num < 10. Já caso eu utilizasse o do/while dentro do try eu teria que fazer de outra forma.

Agora quanto ao uso da variável, usei nota no último println pois se eu usasse num iria dar erro. Por ela estar dentro do try.

Veja o erro:C:\Users\Delano\Desktop>javac aa.java aa.java:24: variable num might not have been initialized System.out.println("O numero "+num+" esta OK"); ^

Você conseguiu perceber isso?[/quote]

Ah claro, é isso que refere-se.
O try-catch cria um novo bloco de código, por isso não reconhece a variavél e etc.
Sim, teria de alterar a lógica nesse caso.

Hummm, não… não é o caso de escopo, se é isso que vc quis dizer, pois a variavel num é uma variável da classe então ela existe em toda classe. O que eu entendo desse erro é que o try pode passar ou não, então se ela é inicializada somente dentro do try o valor dela é incerto.

Digamos que o meu código fosse assim:[code]import javax.swing.*;

public class aa{
public static void main(String[] args){
String nota;
//int num;
boolean blz = false;

		do{ int num;

			nota = JOptionPane.showInputDialog(null, "Digite um número de 1 a 10" , 

“Entrada…” , JOptionPane.INFORMATION_MESSAGE );
try{
num = Integer.parseInt(nota);
if(num > 10 || num < 0){
System.out.println(“O numero “+num+” nao esta entre 1 e 10”);
}else{
blz = true;
}
}catch(NumberFormatException e){
System.out.println(“Voce precisa digitar um numero”);
}

		}while(!blz);
		System.out.println("O numero "+num+" esta OK");
}

}[/code] Aí sim o problema seria de escopo, pois a variável pertence somente ao do/while.

E o erro seria:C:\Users\Delano\Desktop>javac aa.java aa.java:24: cannot find symbol symbol : variable num location: class aa System.out.println("O numero "+num+" esta OK"); ^

Entende?

[quote=quil]Eu tentei usar o "do . While " mas não tive nenhum progresso com isso, então eu usei o while e o programam fica repetindo infinitamente a parte do if em que diz " Digite um número de um a Dez " mas eu não quero que ele fique repetindo essa mensagem sem o usuário poder fazer nada, eu quero que o programa mostre essa mensagem e depois que o usuário possa entrar com um novo valor e após ele entrar com um valor abaixo de DEZ ele pare caso contraio ele continue pedindo para o usuário digitar um número infinitamente até que o usário digite um número menor que DEZ. :twisted: :twisted: :twisted:

[code]import javax.swing.JOptionPane;

public class MenorQueDez {

public static void main(String[] args) {

    String nota;



    nota = JOptionPane.showInputDialog(null, "Digite um número de um a Dez" , " Digite um número de um a Dez" , JOptionPane.INFORMATION_MESSAGE );

    int note = Integer.parseInt(nota);

//Aqui esta fazendo um "Casting " para passar uma string digitada pelo usuário
//para um int.

while(note > 10){

    if (note > 10) {
        JOptionPane.showMessageDialog(null, "Digite um número abaixo de Dez! ");


    }
    
    if (note < 10) {
        JOptionPane.showMessageDialog(null, "O número digitado é: " + note);

//Para que apareça uma mensagem e um valor int você deve cocatenar o que você
//deseja.

    }


    System.out.println(note);

}

}

}
[/code]
[/quote]

Atenção na lógica.

Exemplo em que o unico ponto de parada é uma nota válida de 0 a 10:

public int getNota(){ while(true){ String notaString = JOptionPane.showInputDialog("Digite uma nota"); if(notaString != null && !notaString.equals("") && notaString.matches("[0-9]{"+notaString.length()+"}") && Integer.parseInt(notaString)<=10){ return Integer.parseInt(notaString); } JOptionPane.showMessageDialog(null, "Nota Inválida"); } }

Post duplicado.

[quote=Vingdel]Hummm, não… não é o caso de escopo, se é isso que vc quis dizer, pois a variavel num é uma variável da classe então ela existe em toda classe. O que eu entendo desse erro é que o try pode passar ou não, então se ela é inicializada somente dentro do try o valor dela é incerto.

Digamos que o meu código fosse assim:[code]import javax.swing.*;

public class aa{
public static void main(String[] args){
String nota;
//int num;
boolean blz = false;

		do{ int num;

			nota = JOptionPane.showInputDialog(null, "Digite um número de 1 a 10" , 

“Entrada…” , JOptionPane.INFORMATION_MESSAGE );
try{
num = Integer.parseInt(nota);
if(num > 10 || num < 0){
System.out.println(“O numero “+num+” nao esta entre 1 e 10”);
}else{
blz = true;
}
}catch(NumberFormatException e){
System.out.println(“Voce precisa digitar um numero”);
}

		}while(!blz);
		System.out.println("O numero "+num+" esta OK");
}

}[/code] Aí sim o problema seria de escopo, pois a variável pertence somente ao do/while.

E o erro seria:C:\Users\Delano\Desktop>javac aa.java aa.java:24: cannot find symbol symbol : variable num location: class aa System.out.println("O numero "+num+" esta OK"); ^

Entende?[/quote]

Exatamente por ser incerto, é que ela não pode ser inicializada no try-catch, perfeito. Era isso que eu me referia mas me expressei erroneamente.
Afinal, a exceção pode ocorrer na primeira linha do try-catch e poderia nem mesmo iniciar um valor a variavél em questão.

Abraços!

Eu só vim aqui para dizer que consegui resolver esse problema utilizando o " while ", como desde o inicio eu já vinha querendo utiliza-lo
finalmente eu consegui, e agradeço a todos que tentaram me ajudar também Veleu pessoal .
Agora vejam a gambiarra que eu fiz para conseguir o que eu queria. :twisted: :twisted: :twisted:

//agora sim o programa esta cem por cento.

import javax.swing.JOptionPane;


public class Gula

{

public static void main(String[] args )

{

String gula;

gula = JOptionPane.showInputDialog(null,"Digite um numero Menor que Dez:  ", "primeiro Box",JOptionPane.INFORMATION_MESSAGE );
int gul = Integer.parseInt(gula);
//Aqui  esta fazendo um casting para converter uma string para um numero inteiro.

if (gul > 10  )


{


 while (gul > 10)
//Enquanto o usuário digitar um número maior que Dez, o while continuara a executar um
//loop ate que o usuário digite um número menor que Dez.
 {

 String gule = JOptionPane.showInputDialog(null, "Digite um numero menor que Dez: ", "segundo Box", JOptionPane.INFORMATION_MESSAGE);

 int gulu = Integer.parseInt(gule);
  


if (gulu < 10 )
//Quando o usuário digitar um número menor que Dez esse if exibira uma mensagem
//dizendo qual foi o número digitado.
{

JOptionPane.showMessageDialog(null, "O numero que digitastes foi: " +  gulu );

break;
//Esse break não deixa o while continuar a executar loops quando a instrução se tornar
//verdadeira.
}

 }

    }



if (gul < 10 )
//Se o usuário digitar um número menor que Dez essa instrução é executada sem passar
//pelo while.
{

JOptionPane.showMessageDialog(null, "O numero que digitastes foi: " +  gul );



}



System.out.println("Fulmetal alchemist");


    }
}