Olá!!
começei a fazer o EP3 e tive um problema no retorno da matriz resultado... quando peço para retornar aparece o seguintes caracteres no lugar da matriz:
[[I@878c4c
não sei onde estou errando...
obrigado pela atenção!
tive o mesmo problema.
eu desisti (temporariamente, é claro) de fazer o negócio funcionar desse jeito. coloquei o método como void e imprimi a matriz com laços encaixados.
fiz isso para poder continuar mexendo no ep até ter uma boa solução....
eu desisti (temporariamente, é claro) de fazer o negócio funcionar desse jeito. coloquei o método como void e imprimi a matriz com laços encaixados.
fiz isso para poder continuar mexendo no ep até ter uma boa solução....
Olá. Matheus
Não tinha entendido o que você quis dizer com "quando peço para retornar aparece o seguintes caracteres". Mas parece que você está tentando imprimir diretamente a matriz, fazendo algo como:
System.out.println("Imprimindo matriz: " + matriz);
Realmente, esse procedimento não lhe dará o resultado desejado. O correto é fazer como a Maria disse.
Faça dois laços de modo a percorrer todos os elementos da matriz e imprima-os um a um.
Abraço,
Vinícius
Não tinha entendido o que você quis dizer com "quando peço para retornar aparece o seguintes caracteres". Mas parece que você está tentando imprimir diretamente a matriz, fazendo algo como:
System.out.println("Imprimindo matriz: " + matriz);
Realmente, esse procedimento não lhe dará o resultado desejado. O correto é fazer como a Maria disse.
Faça dois laços de modo a percorrer todos os elementos da matriz e imprima-os um a um.
Abraço,
Vinícius
Vinícius,
Eu diria que o problema foi que ele tentou criar um método assim:
int[][] feiowh()
{
int [][] matriz = new int[i][j];
bla
return matriz;
}
daí o programa vai retornar aquelas coisas esquisitas...
e eu acho que é obrigatório que façamos isso no ep, segundo o enunciado.
mas como fazer para que o programa não retorne esse negócio esquisito...
Eu diria que o problema foi que ele tentou criar um método assim:
int[][] feiowh()
{
int [][] matriz = new int[i][j];
bla
return matriz;
}
daí o programa vai retornar aquelas coisas esquisitas...
e eu acho que é obrigatório que façamos isso no ep, segundo o enunciado.
mas como fazer para que o programa não retorne esse negócio esquisito...
Caro monitor:
O que o Matheus quis dizer é que ele colocou um comando return (nome da matrix) no final do método int[][] geraResultados().
Porém, não é devolvida uma matrix na tela e sim os códigos que não fazem sentido.
A pergunta é: mesmo que o método esteja correto, quando criamos uma matrix usando int[][] geraResultados() o return não devolve uma matrix "bonitinha" na tela? - como ocorre se usarmos um void geraResultados() e damos o System.out.print de forma conveniente a imprimir as linhas e colunas e formar a matrix.
Obrigado.
O que o Matheus quis dizer é que ele colocou um comando return (nome da matrix) no final do método int[][] geraResultados().
Porém, não é devolvida uma matrix na tela e sim os códigos que não fazem sentido.
A pergunta é: mesmo que o método esteja correto, quando criamos uma matrix usando int[][] geraResultados() o return não devolve uma matrix "bonitinha" na tela? - como ocorre se usarmos um void geraResultados() e damos o System.out.print de forma conveniente a imprimir as linhas e colunas e formar a matrix.
Obrigado.
Ok, talvez eu não tenha me expressado de forma clara.
No exemplo que passei anteriormente, não explicitei o que matriz era. Então:
int [][] matriz;
matriz = geraMatriz();
System.out.println("Imprimindo matriz: " + matriz);
Foi isso que eu entendi que vocês estão fazendo. Alguns podem até ter tentado:
System.out.println("Imprimindo matriz " + geraMatriz() );
Isso funciona perfeitamente quando a variável a ser impressa ou o retorno do método é um tipo primitivo (como int), pois o próprio valor em questão é utilizado.
Porém, quando a variável é uma referência para um objeto, o que deve ser impresso?
Vocês podem até supor que, no caso da matriz, seria razoável imprimir todos seus elementos. Mas o que deve-se imprimir quando o objeto é, por exemplo, do tipo Pessoa:
class Pessoa
{
Nesse caso, talvez o nome seja o que nos interessa, mas também poderia ser o RG, ou até a idade. Viram quem não tem como o Java saber qual atributo de um objeto ele deve imprimir?
Então, quando tentamos usar:
Pessoa alguem = new Pessoa();
System.out.println("pessoa: " + alguem);
o que vemos na tela é uma cadeia de caracteres estranha.
Isso acontece porque, quando o Java tenta executar o println e vê que alguem não é de tipo primitivo, uma chamada ao método toString() do objeto é feita.
Assim como o método construtor, todos os objetos tem o toString(). Sendo que vocês podem reescreve-lo ou não.
Caso esse método não seja reescrito, por padrão, ele devolve uma string que indica o ID do objeto. É isso o que vocês viram quando tentaram imprimir a matriz.
Posto isso, é possível vizualizar duas soluções para o nosso caso, uma simples e outra um pouco mais complexa, porém mais elegante:
1- A forma simples é criar um método que imprime a matriz, como vocês já aprenderam;
2- A outra maneira seria criar uma nova classe para lidar com matrizes e criar lá dentro um método
public String toString()
Assim, o println funcionaria legal.
Espero que eu tenha esclarecido as dúvidas.
Abraço,
Vinícius
No exemplo que passei anteriormente, não explicitei o que matriz era. Então:
int [][] matriz;
matriz = geraMatriz();
System.out.println("Imprimindo matriz: " + matriz);
Foi isso que eu entendi que vocês estão fazendo. Alguns podem até ter tentado:
System.out.println("Imprimindo matriz " + geraMatriz() );
Isso funciona perfeitamente quando a variável a ser impressa ou o retorno do método é um tipo primitivo (como int), pois o próprio valor em questão é utilizado.
Porém, quando a variável é uma referência para um objeto, o que deve ser impresso?
Vocês podem até supor que, no caso da matriz, seria razoável imprimir todos seus elementos. Mas o que deve-se imprimir quando o objeto é, por exemplo, do tipo Pessoa:
class Pessoa
{
String nome;
int RG;
int idade;
}int RG;
int idade;
Nesse caso, talvez o nome seja o que nos interessa, mas também poderia ser o RG, ou até a idade. Viram quem não tem como o Java saber qual atributo de um objeto ele deve imprimir?
Então, quando tentamos usar:
Pessoa alguem = new Pessoa();
System.out.println("pessoa: " + alguem);
o que vemos na tela é uma cadeia de caracteres estranha.
Isso acontece porque, quando o Java tenta executar o println e vê que alguem não é de tipo primitivo, uma chamada ao método toString() do objeto é feita.
Assim como o método construtor, todos os objetos tem o toString(). Sendo que vocês podem reescreve-lo ou não.
Caso esse método não seja reescrito, por padrão, ele devolve uma string que indica o ID do objeto. É isso o que vocês viram quando tentaram imprimir a matriz.
Posto isso, é possível vizualizar duas soluções para o nosso caso, uma simples e outra um pouco mais complexa, porém mais elegante:
1- A forma simples é criar um método que imprime a matriz, como vocês já aprenderam;
2- A outra maneira seria criar uma nova classe para lidar com matrizes e criar lá dentro um método
public String toString()
Assim, o println funcionaria legal.
Espero que eu tenha esclarecido as dúvidas.
Abraço,
Vinícius