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

Eu queria que após o alguém inserir um número maior que [color=blue]10[/color] aparece uma mensagem, pedindo para que ele entre com um valor
menor que 10. E essa mensagem só pararia de aparecer quando ele digitasse um valor menor que [color=blue]10[/color]

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");

        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);

    }
}

Eu sou muito leigo ainda nessa coisa de repetição em java, eu até tentei usar o While mas não tive muito sucesso então o deixei comentado, alguém poderia me ajudar dizendo como eu faço para conseguir que esse programa execute do jeito que eu gostaria.

Olha,

geralmente seguidos o seguinte paradigma:

Quando sabemos exatamente quantas vezes o loop (laço de repetição) for executar, nós usamos o for

[code]
for (inicialização ; condição ; incremento ) {

}[/code]

E quando não sabemos, usamos o while

[code]
while ( condição ){

}[/code]

Espero ter ajudado. :smiley:

Use um Do While.

crie sua variavel antes do DO e leia o valor dentro do DO. Na condição dentro do WHILE faça variavel>=10

int variavel = 0;
do{
//le variavel
while(variavel>=10);

JhowTroMundo, você está ensinando errado. Não leu o que eu disse?
kkkkkkkk

É por esse motivo que não se deve colocar break; dentro de um for.
:slight_smile:

Por que o for vc sabe quantas vezes vai repetir.

O While (do while e etc e tal) não sabem…

[quote=d34d_d3v1l]JhowTroMundo, você está ensinando errado. Não leu o que eu disse?
kkkkkkkk

É por esse motivo que não se deve colocar break; dentro de um for.
:slight_smile:

Por que o for vc sabe quantas vezes vai repetir.

O While (do while e etc e tal) não sabem…

[/quote]

não entendi o problema… do jeito que o laço dele está formado, o bloco será executado um numero indefinido de vezes… só vai sair do laço quando o número digitado for menor do que 10…

eu achei o seu jeito de ensinar mais educativo, não gosto muito de respostas dadas assim…
mas o código está correto, não está?

[quote=digaoneves][quote=d34d_d3v1l]JhowTroMundo, você está ensinando errado. Não leu o que eu disse?
kkkkkkkk

É por esse motivo que não se deve colocar break; dentro de um for.
:slight_smile:

Por que o for vc sabe quantas vezes vai repetir.

O While (do while e etc e tal) não sabem…

[/quote]

não entendi o problema… do jeito que o laço dele está formado, o bloco será executado um numero indefinido de vezes… só vai sair do laço quando o número digitado for menor do que 10…

eu achei o seu jeito de ensinar mais educativo, não gosto muito de respostas dadas assim…
mas o código está correto, não está?[/quote]

Sim, o código funciona como foi citado, usando o do…while(condição).
Não vi problema algum, nesse caso.

E o breaker, pode sim, ser utilizado em um while, para um tratamento particular.
Mas para o seu caso, não vejo essa necessidade.

Abraços.

[quote=d34d_d3v1l]JhowTroMundo, você está ensinando errado. Não leu o que eu disse?
kkkkkkkk

É por esse motivo que não se deve colocar break; dentro de um for.
:slight_smile:

Por que o for vc sabe quantas vezes vai repetir.

O While (do while e etc e tal) não sabem…

[/quote]

Você está equivocado, moço :wink:

com break ficaria algo do tipo:

int variavel = 0;
while (true){
//ler variavel
if(variavel<10)
break;
System.out.println("Digite um valor menor do que dez");
}

Ou mesmo mudando o valor do boolean

int variavel = 0;
boolean isMaiorQueDez = true;
while (isMaiorQueDez ){
//ler variavel
if(variavel<10)
isMaiorQueDez = false
}

Há várias formas de se fazer o proposto e cabe ao programador escolher qual gambiarra melhor lhe apráz. Lembre-se de que o modo com que você trata um loop pode definir se você é ou não contratado num teste.

Por que vou fazer um if pra definir o ponto de parada dentro do laço se o próprio laço verifica essa condição?

Use While.

Abraço!

Amigo JhowTroMundo,

estou me referindo a BREAK dentro de um FOR.
Não é uma boa prática, pois o for foi ‘criado’ com a intenção de repetir um numero x de vezes.
Ou seja, um laço que vai de 1 a x.

O while pode executar de 0 a infinitas vezes…

São questões teoricas quando se aprende programação.
Se voces nunca ouviram falar sobre isso, então beleza,
pensem no jeito mais prático e usual das coisas… Se tiver um pouco mais de
mente aberta, pode aceitar o que estou falando e aprender algo novo.

Se não, continuem com suas vidas pensando que o que eu estou falando é bobagem.
Isso não fará a mínima diferença em minha vida.

Meu intuito é apenas ajudar.
Abraços.

[quote=d34d_d3v1l]Amigo JhowTroMundo,

estou me referindo a BREAK dentro de um FOR.
Não é uma boa prática, pois o for foi ‘criado’ com a intenção de repetir um numero x de vezes.
Ou seja, um laço que vai de 1 a x.

O while pode executar de 0 a infinitas vezes…

São questões teoricas quando se aprende programação.
Se voces nunca ouviram falar sobre isso, então beleza,
pensem no jeito mais prático e usual das coisas… Se tiver um pouco mais de
mente aberta, pode aceitar o que estou falando e aprender algo novo.

Se não, continuem com suas vidas pensando que o que eu estou falando é bobagem.
Isso não fará a mínima diferença em minha vida.

Meu intuito é apenas ajudar.
Abraços.[/quote]

Acalme-se e tenha a mente aberta. Não se pode dizer que não é boa pratica, pois discordo, já que não é 100% dos casos que não se deve aplicar o break.
Você pode ter uma situação em que, dada um certo momento, você deve realizar um break, ou seja, “quebrar” o seu laço de repetição.

Sendo assim, é questão de ponto de vista.
Abraços amigo.

[quote=d34d_d3v1l]Amigo JhowTroMundo,

estou me referindo a BREAK dentro de um FOR.
Não é uma boa prática, pois o for foi ‘criado’ com a intenção de repetir um numero x de vezes.
Ou seja, um laço que vai de 1 a x.

O while pode executar de 0 a infinitas vezes…

São questões teoricas quando se aprende programação.
Se voces nunca ouviram falar sobre isso, então beleza,
pensem no jeito mais prático e usual das coisas… Se tiver um pouco mais de
mente aberta, pode aceitar o que estou falando e aprender algo novo.

Se não, continuem com suas vidas pensando que o que eu estou falando é bobagem.
Isso não fará a mínima diferença em minha vida.

Meu intuito é apenas ajudar.
Abraços.[/quote]

Igualmente.

Entenda que um for não é a melhor escolha para o nosso amigo, pois ele não sabe quantas vezes o usuário vai tentar digitar um número inválido (Entenda a duvida antes de responderum tópico). Nao vejo o por quê dos seus argumentos. Não se sinta magoado. Eu também me equivoco em minhas respostas quando não presto atenção.

break é boa pratica quando realmente precisa-se dele. Nesse caso, seria uma gambiarra. O while ‘PODE’ executar infinitas vezes. Nesse c´so ele só vai ser executado quantas vezes eu quiser que ele seja, que é o numero de vezes em que o usuário entrar com um valor acima de 10. Vai da (má) lógica de cada um. Se isso acontece com frequencia com você, não é culpa minha e não sou eu que preciso aprender “algo novo”.

Se você percebeu, aconselhei um DO WHILE, e não um WHILE. Qual a diferença?

Eu não disse que o que você está falando é bobagem, só quis dizer que nao se aplica ao caso, e acho muito difícil achar alguem mais indiferente do que eu.

Se seu intuito é apenas ajudar, o meu também é. Caso contrário, não estaria aqui.
A gente ainda pode se ajudar um dia.

Abraço.

hihih já vão começar a discutir!

Se for com educação e inteligência, é a melhor coisa.
Isso é algo que eu gosto nesse fórum, só nos ajuda a crescer :slight_smile:

Basta que saiba filtras as informações, certo?
Abraços.

kkkkk

Quer entrar na roda??
:twisted:
:lol:

kkkkk…

Tudo certo então…
Desculpe se meu post ficou meio agressivo…

Um abraço…

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]

Opá Double Post.

Será que alguém poderia dar uma ajudinha.

Oi,

Da uma olhada aqui, por favor…http://javanoroeste.com.br/javanoroeste/aula_04/aula_04.pdf

Segue um exemplo, mas se não entender a lógica, não adianta nada… :roll:


import java.io.*;
class P41
{
	public static void main(String args[])
	{
		DataInputStream d;
		String s;
		int num=-1;
		try
		{
			while(num<0 || num>10)
			{
				System.out.println("Digite um numero de 0 a 10");
				d=new DataInputStream(System.in);
				s=d.readLine();
				num=Integer.parseInt(s);
				 if (num<0 || num>10)
				 System.out.println("Numero invalido \n");
		    }//Fim do while
		}//Fim do try
		catch(IOException e)
 		{
 			System.out.println("Erro na entrada de dados");
 		}
		catch(NumberFormatException e)
		{
			System.out.println("Erro na entrada de dados");
		}
    }//Fim do main
}//Fim do class  

concordo com o amigo Jhow tmb…

abcs

Bom Dia!!!

Eu faria assim:[code]import javax.swing.*;

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

		do{

			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 "+nota+" esta OK");
}

}[/code]Veja se atende o que você precisa.

Qualquer dúvida, sinta-se a vontade para perguntar.

Abraço!