Olá pessoal, estou com uma dúvida referente a conversão de vetores (array) para vetores bidimensionais.
Preciso ler uma string e separar as colunas quando encontra-se um espaço em branco. Fiz isso utilizando o método split() e já está ok. Porém, ao encontrar vírgula, deve ser criada uma nova linha.
Exemplo:
1 2, 3 4, 5 6:
[1, 2,
3, 4,
5, 6].
Alguma dica de como fazer essa conversão utilizando algum parâmetro?
import java.util.Arrays;
public class Main {
public static void main (String[] args) {
String input = args[0];
String[] rows = input.split(",");
String[][] matrix = new String[rows.length][];
for (int i = 0; i < matrix.length; i++) {
matrix[i] = rows[i].split(" ");
}
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix[i].length; j++) {
System.out.print(matrix[i][j] + " ");
}
System.out.println();
}
}
}
$ javac Main.java && java Main '1 2,3 4,5 6'
1 2
3 4
5 6
Perfeito, fiz algumas adaptações e funcionou! Troquei o:
String input = args[0];
Por:
input = scan.nextLine();
Pois o usuário deverá fornecer a matriz. Aliás, o que seria essa citação? Não consegui compreender perfeitamente.
O vetor args
tem os argumentos passados para o programa na linha de comando. Do jeito que eu fiz, você teria que passar os dados na hora de chamar a JVM: java Main '1 2,3 4,5 6'
. Essa string é colocada inteira na primeira posição do vetor args
.
A palavra Main
diz para a JVM qual classe no classpath deve ser utilizada para invocar o método public static void main
. O classpath padrão é o diretório atual.
O que ocorre: preciso ler uma string e transformar a mesma em uma matriz. O parâmetro para quebra de coluna é um espaço, e para quebra de linha é uma vírgula. Então, se caso eu ler a string: A B C, E F G
A nova matriz precisa armazenar:
|A|B|C|,
|E|F|G|. -> Matriz 2x3
Preciso obter esses dados pois preciso ler 2 matrizes e calcular a multiplicação das mesmas, mas, infelizmente, não estou conseguindo prosseguir 