HOWTO · Java

Converter String em Int Array em Java

Este artigo apresenta métodos para converter String em array int em Java.

Na linguagem Java, pode haver várias abordagens para refletir sobre a declaração do problema.

Vamos primeiro dividir a definição do problema em duas partes.

  1. Converta uma string simples no array String.
  2. Converta um array String em um array int.

Aqui está a representação esquemática das duas etapas acima:

sequência de fluxograma para int em Java

Converter String em Array Int usando o método replaceAll()

Podemos usar o método replaceAll() da classe String que leva dois argumentos, valores regex e replacement. Este método substituirá a regex fornecida pelo valor de substituição fornecido. E no final das funções da cadeia, o método split() é usado. Este método divide a String com base no caractere fornecido.

Devemos usar a função Integer.parseInt() quando os valores são divididos e coletados em um array String. Como o método parseInt() lança NumberFormatException, a instrução deve estar em um bloco try...catch para capturar a possível exceção.

Abaixo está o programa de amostra para demonstrar a conversão de strings para a matriz int:

package stringToIntArray;

import java.util.Arrays;

public class ConvertStringToIntArray {
  public static void main(String... args) {
    String testString = "[1,2,356,678,3378]";

    String[] separatedStrings = testString.replaceAll("\\[", "").replaceAll("]", "").split(",");

    int[] intArray = new int[separatedStrings.length];

    for (int i = 0; i < separatedStrings.length; i++) {
      try {
        intArray[i] = Integer.parseInt(separatedStrings[i]);
      } catch (Exception e) {
        System.out.println("Unable to parse string to int: " + e.getMessage());
      }
    }

    System.out.println(Arrays.toString(intArray));
  }
}

Resultado:

[1,2,356,678,3378]

Se testString tiver o valor [1,2,356,678,3378,f], ele lançará uma exceção e a saída terá a seguinte aparência.

Unable to parse string to int: For input string: "f"
[1, 2, 356, 678, 3378, 0]

Converter string em matriz interna usando a biblioteca de fluxo Java 8

No programa abaixo, primeiro, pegamos a função Arrays.stream(). Para fornecer um fluxo para isso, usamos o método substring() da classe String, que usa o primeiro e o último parâmetros de índice. Sobre a String retornada, a função split() é aplicada, que divide a String fornecida com base em um delimitador.

Sobre o fluxo a função map() é aplicada. Esta função recebe qualquer função como argumento e retorna o fluxo. Demos a função trim() da classe String que eliminou os espaços em branco à esquerda e à direita. parseInt transforma a string recebida em int. toArray() despeja elementos inteiros convertidos em um Array.

package stringToIntArray;

import java.util.Arrays;

public class StringToIntUsingJava
8Stream {
  public static void main(String[] args) {
    String str = "[1, 2, 3, 4, 5]";

    int[] arr = Arrays.stream(str.substring(1, str.length() - 1).split(","))
                    .map(String::trim)
                    .mapToInt(Integer::parseInt)
                    .toArray();

    System.out.println(Arrays.toString(arr));
  }
}

Resultado:

[1, 2, 3, 4, 5]

Converter String em Array Int usando StringTokenizer e funções

Instancie o objeto StringTokenizer usando seu construtor StringTokenizer(). O construtor pega a String de entrada e o delimitador para formar uma String tokenizada. Simultaneamente, crie um array de String e int com tamanho como tokens na String tokenizada.

O método countTokens() conta os tokens, que internamente ignora o delimitador. hasMoreTokens() verifica se há algum token presente na string do tokenizer. nextToken() recupera o próximo token da String. Este método lança NoSuchElementException se nenhum tokens estiver presente na String.

Faça a iteração para converter os tokens String em int e colete em um array int.

package stringToIntArray;

import java.util.StringTokenizer;

public class StringToIntUsingStringTokenizer {
  public static void main(String[] args) {
    String testString = "[1,2,3,4]";
    StringTokenizer stk = new StringTokenizer(testString, "[,]");
    String[] strings = new String[stk.countTokens()];
    int[] integerArray = new int[stk.countTokens()];
    int i = 0;
    while (stk.hasMoreTokens()) {
      strings[i] = stk.nextToken();
      integerArray[i] = Integer.parseInt(strings[i]);
      i++;
    }
    for (int j = 0; j < integerArray.length; j++)
      System.out.println("number[" + j + "]=" + integerArray[j]);
  }
}

Resultado:

number[0]=1
number[1]=2
number[2]=3
number[3]=4