Dúvida em laço

Pessoal é o seguinte,

to fazendo um programinha p pedir 3 números p o usuário.
Mas cada número está inserido entre uma quantidade e outra ex: entre 1 e 10.
Se caso o usuário digitar 11 eu quero q ele de uma msg dizendo q o usuário digitou um numero fora da sequencia e volte a dar a opção de digitar de novo.
Se caso digitar o certo ele vai colher o outro até ter colhido os 3 números, depois somar e apresentar o resultado p o usuário.
No meu teste fiz assim:

import java.util.Scanner;

public class Teste
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
int num1,
num2,
num3;

    System.out.print("Digite um número de 1 a 10 para somar: ");
    num1 = input.nextInt();
    
        if (num1 <=0 || num1 > 10)
        {
            System.out.println("Você não digitou um número de 0 a 10");            
        }
        else
        {
        System.out.print("Digite um número de 11 a 20 para somar: ");
        num2 = input.nextInt();
        
                if (num2 <=10 || num2 > 20)
                {
                    System.out.println("Você não digitou um número de 11 a 20");
                } else 
                  {
                System.out.print("Digite um numero 21 a 30 para somar:  ");
                num3 = input.nextInt();
                                   
                        if (num3 <= 20 || num3 > 30)
                        {
                            System.out.println("Você não digitou um numero de 21 a 30");
                        } else
                          {
                              System.out.println("O resultado da soma é: " + (num1+num2+num3));
                          }
                               
        
                  }
        
        }
   
}

}

Sei que é algo bem simples mas estou iniciando no java, sugestões e dicas e macetes serão muito bem vindo.:v:

Você precisa aprender estruturas de repetição !
Sou novo em Java mas já não sou mais um iniciante, meus conhecimentos em programação foram totalmente adquiridos no canal cursoemvideo faça o curso de java e depois o de POO em java.
Mas faça o curso de java desde o começo para depois não se complicar. Há e mais um detalhe os cursos de lá são totalmente gratuitos e possuem uma qualidade muito boa ! Só mais uma coisa se você ainda não fez curso de algoritmo, faça ! vai te ajudar muito.

Cara já li algumas coisas na net sobre cursos de java, vi videos mas não to conseguindo fazer o q informei no primeiro post.
Sua resposta serve tanto para pessoas q estão começando como para programadores com experiência… basicamente vc só me disse p estudar mais, ok, mas me passe um link ou artigo q eu possa resolver o q to pedindo.

Olá, vamos aproveitar que estamos usando Java e aplicar um pouco de orientação a objetos.

import java.util.Scanner;
class Jogo{

int totalDigitado;
int numeroDigitado;

boolean isNumeroValido(int numero){
	if(numero > 10 || numero <= 0){
		System.out.println("Você deve digitar um numero entre 1 e 10");
		return false;
	}else{
		this.totalDigitado+= numero;
		return true;
	}
    }
}

public class Exercicio{
public static void main(String... args){
	Scanner in = new Scanner(System.in);
	int i = 0;
	Jogo j = new Jogo();
	
	while(i < 3){
		System.out.println("Digite o numero: ");
		j.numeroDigitado = in.nextInt();
		
		if(j.isNumeroValido(j.numeroDigitado)){
			i++;
		}
	}
	
	System.out.println("A soma dos numeros digitados é:"+j.totalDigitado);
	
   }
}

Pode perceber que eu crio uma classe chamada Jogo e declaro dois atributos:
1 - totalDigitado
2 - numeroDigitado;

e declaro um método que tratará a sua necessidade (Verificar se um número está em um certo intervalo). A forma que você estava construindo não estava errada, porém o Java permite recursos para que possamos enxugar muito mais nosso código.

Qualquer dúvida estou a disposição,

Grande abraço.

Cara não adianta tentar fazer uma coisa que você não sabe, eu consegui fazer seu programa mas oque adianta eu te passar os código fonte se você não sabe oque significa os comandos. Entra ai

Minha solução para seu problema é

package progamaguj;

import java.util.Scanner;

public class ProgamaGUJ {
public static void main(String[] args) {
Scanner tec = new Scanner(System.in);
int n = 0;
int n2;
int c = 1;
int maior = 10;
int menor = 0;

    System.out.println("Vamos começar o jogo");
    while (c <= 3) {
        if (c == 2) {
            maior = 20;
            menor = 10;
        }
        if (c == 3) {
            maior = 30;
            menor = 15;
        }
        System.out.println("Escreva um número de "+ menor + " a "+ maior);
        n2 = tec.nextInt();
        if (n2 <= menor || n2 > maior) {
            System.out.println("Numero invalido");
        } 
        else {
            System.out.println("Muito bem");
            n += n2;
            c++;
        }
    }
    System.out.println("A soma de todos os valores é "+ n);
}

}

mano sem querer ser grosso, não to pedindo p enviarem o código com a solução, ao invés de ficar só assistindo vídeo aulas eu to lendo apostilas e um livro sobre java, vídeo aulas são boas mas não quero ficar na dependencia de vídeos, quero ver tipos de soluções para um mesmo problema.

OK ! você conseguiu entender o meu código ?

Existem diversas maneiras de fazer. Pode usar for, while, do-while, pode fazer sem utilizar laços (uma vez que você sabe a quantidade de vezes que o usuário vai digitar).

Fiz um código todo comentado pra você dar uma olhada.

import java.util.Scanner;

public class ProblemaComLaco {

	public static void main(String[] args) {
		// nossa input
		Scanner s = new Scanner(System.in);
		// variável que vai armazenar a soma
		int soma = 0;
		// vetor com 2 inteiros para armazenar o intervalo
		int intervalo[] = { 1, 10 }; // inicia as posições com min 1 e max 10

		// laço vai executar a ação 3 vezes
		for (int i = 0; i < 3;) {
			//pede para que o usuário informe o número
			System.out.print("Informe um número entre " + intervalo[0] + " e " + intervalo[1] + " -> ");
			// captura o que o usuário digitou
			int num = s.nextInt(); 
			// verifica se o número está dentro do intervalo
			if (num >= intervalo[0] && num <= intervalo[1]) {
				// aumenta o minimo
				intervalo[0] += 10;
				// aumenta o máximo
				intervalo[1] += 10;
				// incrementa nosso contador
				i++;
				// faz a soma
				soma += num;
			} else {
				// se não está no intervalo, é um número inválido
				System.out.println("Número inválido.");
			}
		}

		System.out.println("Soma: " + soma);
	}

}

Saída do código:

Informe um número entre 1 e 10 -> -5
Número inválido.
Informe um número entre 1 e 10 -> 11
Número inválido.
Informe um número entre 1 e 10 -> 9
Informe um número entre 11 e 20 -> 8
Número inválido.
Informe um número entre 11 e 20 -> 12
Informe um número entre 21 e 30 -> 49
Número inválido.
Informe um número entre 21 e 30 -> 28
Soma: 49

Basicamente isso, qualquer dúvida, posta ae :smiley: