[Resolvido] Usando / e % (Div e Mod)

Estou precisando de ajuda, estou querendo receber 5 números de um usuário e dividi-los ex:
Usuário digitou= 12345
quero dividi-los em 5 variáveis abcde:
a = 1
b = 2
c = 3
d = 4
e = 5
e caso ele digite menos ou mais que 5 números apresente erro.

Vlw

Quer q o número divida por estes 5 numeros pra ter soh um resultado ou quer q ele divida separadamente por cada um deles pa obter resultados diferentes?

Você pretende realizar operações matemáticas com essas variáveis?

Porque seria muito mais fácil você fazer isso com String.

Agora com uma operação matemática, pra você pegar o 5, você pode fazer (12345 % 10). Aí o resto fica fácil adaptar.

Vlw deu certo aqui, fui adaptando usando o % e / conseguindo fazer o q eu queria.

Obrigado pela força

Poste o que você fez :slight_smile:

É bom postar as resoluções nos tópicos também, pra algumas pessoas pode parecer um problema simples, mas pra outras pode ser que esse tópico dê uma luz algum dia.

E se suas dúvidas foram sanadas, edite, por favor, o seu primeiro post desse tópico, e adicione a tag [RESOLVIDO] ao Assunto.

Abraço! :slight_smile:

Eu ainda preciso achar a lógica para exibir mensagem de erro caso o usuário digite menos ou mais que 5 digitos.

Como eu poderia fazer isso?

Bom, pode ser que haja uma operação que consiga te dizer isso, mas não consigo pensar em uma segura, talvez alguém aí tenha uma idéia. Eu gostaria de ver também, mas o que você pode fazer é transformar seu numero em String e perguntar pelo tamanho, assim: Integer.toString(12345).length();

Oi, boa tarde.

Isto que você quer fazer está parecendo meio estranho… o que exatamente você deseja fazer?

Se os dados que o usuário digitou vierem na forma de String, basta fazer:

if ( numeros.length() != 5 ) {
  throw new IllegalArgumentException("Informe exatamente 5 números");
}

Abraço,

Então o q eu realmente preciso fazer.
O usuário vai digitar exatamente 5 numeros (int), quero que caso ele não tenha digitado 5 digitos exiba uma mensagem de erro.
A divisão dos números eu consegui usando o / e %.

System.out.println("Digite 5 números: ");
   int num = input.nextInt();
   
   int a = num/10000;
   int b = num%10000/1000;
   int c = num%1000/100;
   int d = num%100/10;
   int e = num%10;
   System.out.printf("A = %d \nB = %d \nC = %d \nD = %d \nE = %d\n" , a , b , c , d , e);

Por que ao invés de nextInt() vc não usa o next() e pega a String inteira?

Algo do tipo:

String numeros = input.next()
int a = Integer.parseInt(numeros.substring(0,1));
int b = Integer.parseInt(numeros.substring(1,2));
. . .
if (numeros.lenght() != 5) {
  //ERRO
}

Acho que fica bem mais fácil.

EDIT: Você ainda pode limitar a entrada de digitos. Uma maneira é esta, ao invés de usar “input.next()”:

String numeros = input.nextLine().replaceAll("[^0-9]", "")

Desta maneira, caso o usuário digite: 1"!@#$%¨&*()+{}2 3á
numeros será = “123” :smiley:

Vlw vou tentar aqui.

Muito obrigado ^^.