Separação de String

13 respostas
santosmm

Galera, é o seguinte foi proposto o seguinte exercício em aula.

[b]“Escreva um aplicativo que insere um número consistindo em cinco dígitos do usuário, separe o número em seus dígitos individuais e imprima os dígitos separados uns dos outros por três espaços cada.Por exemplo, se o usuário digitar o número 42339, o programa deve imprimir.”

4 2 3 3 3 9[/b]

13 Respostas

WendersonLP

Para isso utilize o método split da própria classe String, esse método retorna um vetor com as partes
separadas da String que o utilizou.

String enter = "12345";
String[] result = enter.split("");
santosmm

Cara o código que estou fazendo é o seguinte:

import java.util.Scanner;

/**
 *
 * @author Matheus Motta dos Santos
 */
public class Exercicio2_30 {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        
        Scanner input = new Scanner(System.in);

        int number;

        System.out.print("Digite um número: ");
        number = input.nextInt();

        System.out.printf("Resultado é %c\n",number);
    }

}
WendersonLP

Então é só você converter o número, que será lido como int, para uma String e depois vazer o que
eu disse logo acima.

String enter = String.valueOf(readedNumber)
santosmm

Cara não funcionou :roll: , mas no exercício tem a seguinte dica

[Dica: Para você resolver o exercício precisará utilizar tanto as operações de divisão como as de resto para “selecionar” cada dígito]

romarcio

tenta assim:

public static void main(String[] args) {

        Scanner input = new Scanner(System.in);

        String number = null;

        System.out.print("Digite um número: ");
        number = input.next();

        System.out.println("Resultado é: " + number.replace("", "   ").trim());

    }
R

cara usa o split q eh simples

A

Se entendi bem, acho que é isso que você quer:

public static void main(String[] args) {
        Scanner input = new Scanner(System.in);

        String number = "";
        String newNumber = "";

        System.out.print("Digite um número: ");
        number = input.next();

        String[] nums = number.split("");
        for(String s : nums)
            newNumber += s+"   ";

        System.out.println(newNumber);

    }
nel

Bom dia.

Simples e prático e como já foi citado utilizando-se de split.

Scanner input = new Scanner(System.in);
   System.out.print("Digite o valor desejado: ");
   int value = input.nextInt();
   String result = String.valueOf(value);
   String[] array = result.split("");
   
   for (String string : array) {
     System.out.print(string+" ");
   }

Abraços.

M

santosmm:
Cara não funcionou :roll: , mas no exercício tem a seguinte dica

[Dica: Para você resolver o exercício precisará utilizar tanto as operações de divisão como as de resto para “selecionar” cada dígito]


O split() resolve, mas parece que não é isso que o exercício quer (pela dica, ele quer que você resolva isso matematicamente).

Lembre-se da segunda série que isso irá ajudar. :slight_smile: Números decimais, unidade de milhar, centena, dezena, etc., etc. …

// 45248:
dm | um | c | d | u
 4  |  5 | 2 | 4 | 8

Se você dividir esse número acima por 10000, qual o resultado da divisão inteira? E quando resta? E se você pegar o resto e dividir por 1000? E assim por diante.

santosmm

marcobiscaro2112:
santosmm:
Cara não funcionou :roll: , mas no exercício tem a seguinte dica

[Dica: Para você resolver o exercício precisará utilizar tanto as operações de divisão como as de resto para “selecionar” cada dígito]


O split() resolve, mas parece que não é isso que o exercício quer (pela dica, ele quer que você resolva isso matematicamente).

Lembre-se da segunda série que isso irá ajudar. :slight_smile: Números decimais, unidade de milhar, centena, dezena, etc., etc. …

// 45248:
dm | um | c | d | u
 4  |  5 | 2 | 4 | 8

Se você dividir esse número acima por 10000, qual o resultado da divisão inteira? E quando resta? E se você pegar o resto e dividir por 1000? E assim por diante.

Cara excelente, não testei ainda não…mas a sua lógica deve estar plenamente correta.

fabio.motta

faça com div e mod…

andeb

Algo assim?

StringBuilder builder = new StringBuilder();

int div = 10 * 10 * 10 * 10 * 10;
while (div != 1) {
    builder.append(number % div / (div / 10));
    builder.append("   ");
    div /= 10;
}

System.out.println(builder.toString());
fabio.motta

Fiz esse código pra vc.
Veja se é isso que o prof. pediu.
Gde abraço!

package pacote;

import java.util.Scanner;

/**
 *
 * @author Fábio Silveira da Motta
 * Análise e Desenvolvimento de Sistemas
 * Instituto Infnet
 */
public class Programinha {

     public static void main(String[] args) {

    	 int number;
    	 int dezenaMilhar;
    	 int n1;
    	 int milhar;
    	 int n2;
    	 int centena;
    	 int n3;
    	 int dezena;
    	 int unidade;

         Scanner sc = new Scanner(System.in);

         System.out.print("Digite um número inteiro de cinco dígitos: ");
         number = sc.nextInt();

         if (number > 9999 && number < 100000){
        	 dezenaMilhar = number / 10000;
        	 n1 = number % 10000;
        	 milhar = n1 / 1000;
        	 n2 = n1 % 1000;
        	 centena = n2 / 100;
        	 n3 = n2 % 100;
        	 dezena = n3 / 10;
        	 unidade = n3 % 10;

        	 System.out.print(dezenaMilhar + " " + " ");
        	 System.out.print(milhar + " " + " ");
        	 System.out.print(centena + " " + " ");
        	 System.out.print(dezena + " " + " ");
        	 System.out.print(unidade);
         }
         else{
        	 System.out.println("Digite um número de cinco dígitos !");
         }
     }

}
Criado 16 de dezembro de 2009
Ultima resposta 21 de dez. de 2009
Respostas 13
Participantes 9