Estou tentando retornar 2 valores de um método Java, mas recebo esses erros. Aqui está o meu código:
// Method code
public static int something(){
int number1 = 1;
int number2 = 2;
return number1, number2;
}
// Main method code
public static void main(String[] args) {
something();
System.out.println(number1 + number2);
}
Erro:
Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - missing return statement
at assignment.Main.something(Main.java:86)
at assignment.Main.main(Main.java:53)
Resultado Java: 1
java
function
return-value
javaLearner.java
fonte
fonte
Respostas:
Em vez de retornar uma matriz que contém os dois valores ou usar uma
Pair
classe genérica , considere criar uma classe que represente o resultado que você deseja retornar e retorne uma instância dessa classe. Dê à classe um nome significativo. Os benefícios dessa abordagem sobre o uso de uma matriz são a segurança de tipo e isso facilitará a compreensão do seu programa.Nota: Uma
Pair
classe genérica , conforme proposto em algumas das outras respostas aqui, também fornece segurança de digitação, mas não transmite o que o resultado representa.Exemplo (que não usa nomes realmente significativos):
fonte
Java não suporta retornos com vários valores. Retorne uma matriz de valores.
fonte
Você pode implementar um genérico
Pair
se tiver certeza de que precisa retornar apenas dois valores:e depois faça com que o método retorne
Pair
:fonte
Você pode retornar apenas um valor em Java, portanto, a maneira mais limpa é a seguinte:
Aqui está uma versão atualizada do seu código:
fonte
Aqui está a solução realmente simples e curta com o SimpleEntry:
Utiliza apenas funções internas do Java e vem com o tipo de segurança safty.
fonte
você precisa usar coleções para retornar mais de um valor de retorno
no seu caso, você escreve seu código como
fonte
fonte
Use um objeto do tipo Pair / Tuple, você nem precisará criar um se você depender do Apache commons-lang. Basta usar a classe Pair .
fonte
Estou curioso para saber por que ninguém criou a solução de retorno de chamada mais elegante. Portanto, em vez de usar um tipo de retorno, você usa um manipulador passado no método como argumento. O exemplo abaixo tem as duas abordagens contrastantes. Eu sei qual dos dois é mais elegante para mim. :-)
fonte
Você não precisa criar sua própria classe para retornar dois valores diferentes. Basta usar um HashMap como este:
Você ainda tem o benefício de segurança de tipo.
fonte
Na minha opinião, o melhor é criar uma nova classe cujo construtor é a função que você precisa, por exemplo:
Em seguida, basta usar o construtor como você usaria a função:
e você pode usar pR.sth1, pR.sth2 como "2 resultados da função"
fonte
Você também pode enviar objetos mutáveis como parâmetros, se você usar métodos para modificá-los, eles serão modificados quando você retornar da função. Não funcionará em coisas como Float, pois é imutável.
O resultado é: Rutger
fonte
Retornar uma matriz de objetos
fonte
Primeiro, seria melhor se o Java tivesse tuplas para retornar vários valores.
Segundo, codifique a
Pair
classe mais simples possível ou use uma matriz.Mas, se você fazer necessidade de voltar um par, considere o conceito que ela representa (começando com seus nomes de campos, em seguida, nome da classe) - e se desempenha um papel maior do que se pensava, e se ele iria ajudar a sua concepção global para ter uma abstração explícita para ele. Talvez seja um
code hint
...Por favor, note: Eu não estou dizendo que dogmaticamente vai ajudar, mas apenas para olhar, para ver se ele faz ... ou se isso não acontecer.
fonte
e isso é como você fazê-lo em JS:
return { objA, valueB }
. Eu sei que é offtopic, mas não posso me abster de deixar esse comentário depois de ver como toda uma nova classe deve ser implementada em Java. JavaScript - pare de desperdiçar sua vida e comece a criar scripts!fonte