Estoy tratando de devolver 2 valores de un método Java pero obtengo estos errores. Aquí está mi 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);
}
Error:
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
fuente
fuente
Respuestas:
En lugar de devolver una matriz que contenga los dos valores o usar una
Pair
clase genérica , considere crear una clase que represente el resultado que desea devolver y devuelva una instancia de esa clase. Dale a la clase un nombre significativo. Los beneficios de este enfoque sobre el uso de una matriz son la seguridad de tipo y hará que su programa sea mucho más fácil de entender.Nota: Una
Pair
clase genérica , como se propone en algunas de las otras respuestas aquí, también le da seguridad de tipo, pero no transmite lo que representa el resultado.Ejemplo (que no usa nombres realmente significativos):
fuente
Java no admite devoluciones de valores múltiples. Devuelve una matriz de valores.
fuente
Puede implementar un genérico
Pair
si está seguro de que solo necesita devolver dos valores:y luego haga que el método devuelva que
Pair
:fuente
Solo puede devolver un valor en Java, por lo que la mejor manera es la siguiente:
Aquí hay una versión actualizada de su código:
fuente
Aquí está la solución realmente simple y corta con SimpleEntry:
Solo utiliza funciones integradas en Java y viene con el beneficio de tipo seguro.
fuente
tienes que usar colecciones para devolver más de un valor de retorno
en tu caso escribes tu código como
fuente
fuente
Use un objeto de tipo Par / Tupla, ni siquiera necesita crear uno si depende de Apache commons-lang. Solo usa la clase Pair .
fuente
Tengo curiosidad por saber por qué a nadie se le ocurrió la solución de devolución de llamada más elegante. Entonces, en lugar de usar un tipo de retorno, usa un controlador pasado al método como argumento. El siguiente ejemplo tiene los dos enfoques contrastantes. Sé cuál de los dos es más elegante para mí. :-)
fuente
No necesita crear su propia clase para devolver dos valores diferentes. Solo usa un HashMap como este:
Incluso tiene el beneficio de la seguridad tipográfica.
fuente
En mi opinión, lo mejor es crear una nueva clase cuyo constructor sea la función que necesita, por ejemplo:
Luego simplemente use el constructor como usaría la función:
y puede usar pR.sth1, pR.sth2 como "2 resultados de la función"
fuente
También puede enviar objetos mutables como parámetros, si utiliza métodos para modificarlos, se modificarán cuando regrese de la función. No funcionará en cosas como Float, ya que es inmutable.
El resultado es: Rutger
fuente
Devolver una matriz de objetos
fuente
Primero, sería mejor si Java tuviera tuplas para devolver múltiples valores.
Segundo, codifique la
Pair
clase más simple posible , o use una matriz.Pero, si lo hace la necesidad de volver un par, considere lo que el concepto que representa (empezando por sus nombres de campo, a continuación, nombre de la clase) - y si desempeña un papel más importante de lo que pensaba, y si sería ayudar a su diseño general para tener una abstracción explícita para ello. Tal vez es un
code hint
...Por favor Nota: No estoy diciendo que dogmáticamente se ayudar, pero sólo para mirar, a ver si lo hace o no ... si lo hace.
fuente
y así es como lo haces en JS:
return { objA, valueB }
. Sé que no es un tema, pero no puedo abstenerme de dejar este comentario después de ver cómo se debe implementar una clase completamente nueva en Java. JavaScript: ¡deja de malgastar tu vida y comienza a crear secuencias de comandos!fuente