É possível preencher uma matriz java de forma que a primeira coluna (x4) seja de Strings e as demais (x4) sejam ‘‘Doubles’’?
Obs.: Novato em Java
Se for possível me dar um exemplo de código, pois nem sei por onde começar. Não consigo entender o tutorial que estou acompanhando.
Object[][] matriz = new Object[][] {
new Object[] { "String 1", 1.0, 5.1, 9.2 },
new Object[] { "String 2", 2.0, 6.1, 10.2 },
new Object[] { "String 3", 3.0, 7.1, 11.2 },
new Object[] { "String 4", 4.0, 8.1, 12.2 },
};
1 curtida
Massa. Então ao invés de colocar tipo ''String[][]" eu uso esse ‘‘Object’’, nele eu posso ler os dois tipos de dados, certo?
A classe Object
é a superclasse de qualquer classe Java.
Então, quando você declara um array de Object
, os elementos podem ser do tipo Object
ou de qualquer classe derivada.
String
e Double
também são classes, mas o Double
pode ser convertido “automagicamente” para o tipo primitivo double
através do auto-unboxing, então basta você fazer um cast para o tipo de dado que você sabe que está armazenado naquela posição:
String valor00 = (String) matriz[0][0];
double valor01 = (Double) matriz[0][1];
double valor02 = (Double) matriz[0][2];
double valor03 = (Double) matriz[0][3];
1 curtida
Certo, acho que entendi. Vou tentar fazer isso. Muito obrigado
Entendi o cast
, mas e quando usando o Scanner
? É possível? Como diferenciar os tipos?
Meu código abaixo:
// matriz de strings e inteiros
Object[][] letrasNumeros = new Object[3][3];
// preenchendo matriz
Scanner scan = new Scanner(System.in);
for(int i=0; i<letrasNumeros.length; i++) {
for(int j=0; j<letrasNumeros.length; j++) {
System.out.print("Digite um nome ou uma letra: ");
letrasNumeros[i][j] = scan.nextInt(); // <- o que colocar no lugar do NEXT INT pra ler tbm Strings?
}
}
Hahahaha… Olha o que fiz!
letrasNumeros[i][j] = (Object)scan.next();
Aí deu certo! Tá certo isso?? hahaha… Cara, brigadão, desculpa o incômodo aí
Abraço!
Leia a documentação da classe Scanner.
1 curtida
Sim senhor! Recomenda quem sabe, segue a dica quem tem juízo