Dúvida simples sobre tipos

02/06/2019

8

Eu estou aprendendo Java e estou com uma dúvida quanto a tipos... Estou programando o seguinte código

Object[] amigo = {"Stefano","Bozo","Israel","Jonas","Mike","Douglas"};


String s = String.valueOf(JOptionPane.showInputDialog(
			null,"Escolha um amigo","Escolha",JOptionPane.QUESTION_MESSAGE,null,amigo,amigo[5]));		
		System.out.println(JOptionPane.showInputDialog("O amigo escolhido foi: ", s));	



Eu programei o array amigo como object porque foi a unica forma de eu conseguir executar o código, porque a princípio eu tentei rodar assim

String[] amigo = {"Stefano","Bozo","Israel","Jonas","Mike","Douglas"};
		
		amigo = JOptionPane.showInputDialog(null,"Escolha um amigo","Escolha",JOptionPane.QUESTION_MESSAGE,null,amigo,amigo[3]);
		System.out.println(JOptionPane.showInputDialog("Seu amigo escolhido foi:", amigo));


Mas deu erro por que é como se ele não aceitasse o tipo Array String, somente Object.

Eu até adiciono um cast mas dá erro depois, tipo nesse caso
amigo = (String[]) JOptionPane.showInputDialog(null,"Escolha um amigo","Escolha",JOptionPane.QUESTION_MESSAGE,null,amigo,amigo[3]);
		System.out.println(JOptionPane.showInputDialog("Seu amigo escolhido foi:", amigo));


Aí o Java reporta esse erro : Exception in thread "main" java.lang.ClassCastException: class java.lang.String cannot be cast to class [Ljava.lang.String; (java.lang.String and [Ljava.lang.String; are in module java.base of loader 'bootstrap')
at AprendendoJanelas.teste.main(teste.java:24)



Tipo, por que eu tenho que criar um array do tipo Object e depois eu preciso converter esse object pra String, não posso colocar direto pra tipo STRING ?
Responder

Posts

02/06/2019

Daniel Melo

Cara, não entendi, eu rodei o código abaixo aqui no meu computador e funcionou numa boa:
package Teste;
import javax.swing.JOptionPane;

        public class Teste{
                public static void main(String[] args) {
                        Object[] amigo = {"Stefano","Bozo","Israel","Jonas","Mike","Douglas"};
                        String s = String.valueOf(JOptionPane.showInputDialog(
                                null,"Escolha um amigo","Escolha",JOptionPane.QUESTION_MESSAGE,null,amigo,amigo[5]));
                        System.out.println(JOptionPane.showInputDialog("O amigo escolhido foi: ", s));
                }
        }
Responder

02/06/2019

Weslley Felix

Cara, não entendi, eu rodei o código abaixo aqui no meu computador e funcionou numa boa:
package Teste;
import javax.swing.JOptionPane;

        public class Teste{
                public static void main(String[] args) {
                        Object[] amigo = {"Stefano","Bozo","Israel","Jonas","Mike","Douglas"};
                        String s = String.valueOf(JOptionPane.showInputDialog(
                                null,"Escolha um amigo","Escolha",JOptionPane.QUESTION_MESSAGE,null,amigo,amigo[5]));
                        System.out.println(JOptionPane.showInputDialog("O amigo escolhido foi: ", s));
                }
        }


Sim... Essa parte do código funciona...
O que eu queria saber mesmo era porque que eu preciso criar um array do tipo Object pra depois tornar ele pra String ?

Eu não posso pôr ele direto pra String ?
String[] amigo = {"Stefano","Bozo","Israel","Jonas","Mike","Douglas"};
         
        amigo = JOptionPane.showInputDialog(null,"Escolha um amigo","Escolha",JOptionPane.QUESTION_MESSAGE,null,amigo,amigo[3]);
        System.out.println(JOptionPane.showInputDialog("Seu amigo escolhido foi:", amigo));


Por que eu preciso pôr em Object ?
Responder

02/06/2019

Daniel Melo

Cara, não entendi, eu rodei o código abaixo aqui no meu computador e funcionou numa boa:
package Teste;
import javax.swing.JOptionPane;

        public class Teste{
                public static void main(String[] args) {
                        Object[] amigo = {"Stefano","Bozo","Israel","Jonas","Mike","Douglas"};
                        String s = String.valueOf(JOptionPane.showInputDialog(
                                null,"Escolha um amigo","Escolha",JOptionPane.QUESTION_MESSAGE,null,amigo,amigo[5]));
                        System.out.println(JOptionPane.showInputDialog("O amigo escolhido foi: ", s));
                }
        }


Sim... Essa parte do código funciona...
O que eu queria saber mesmo era porque que eu preciso criar um array do tipo Object pra depois tornar ele pra String ?

Eu não posso pôr ele direto pra String ?
String[] amigo = {"Stefano","Bozo","Israel","Jonas","Mike","Douglas"};
         
        amigo = JOptionPane.showInputDialog(null,"Escolha um amigo","Escolha",JOptionPane.QUESTION_MESSAGE,null,amigo,amigo[3]);
        System.out.println(JOptionPane.showInputDialog("Seu amigo escolhido foi:", amigo));


Por que eu preciso pôr em Object ?


Claro que pode, eu peguei o mesmo código que digitei acima e troquei:
Object[] amigo = {"Stefano","Bozo","Israel","Jonas","Mike","Douglas"};

por:
String[] amigo = {"Stefano","Bozo","Israel","Jonas","Mike","Douglas"};

e continuou funcionando normalmente
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários. Para saber mais sobre o uso de cookies,
consulte nossa política de privacidade. Ao continuar navegando em nosso site, você concorda com a nossa política.

Aceitar