Я пытаюсь вернуть 2 значения из метода Java, но я получаю эти ошибки. Вот мой код:
// 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);
}
Ошибка:
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)
Java Результат: 1
java
function
return-value
javaLearner.java
источник
источник
Ответы:
Вместо того, чтобы возвращать массив, содержащий два значения, или использовать универсальный
Pair
класс, рассмотрите возможность создания класса, представляющего результат, который вы хотите вернуть, и возврата экземпляра этого класса. Дайте классу значимое имя. Преимущества этого подхода по сравнению с использованием массива - безопасность типов, и это сделает вашу программу намного проще для понимания.Примечание. Универсальный
Pair
класс, как предлагается в некоторых других ответах, здесь также обеспечивает безопасность типов, но не передает то, что представляет результат.Пример (в котором не используются действительно значимые имена):
источник
Java не поддерживает возврат нескольких значений. Вернуть массив значений.
источник
Вы можете реализовать универсальный,
Pair
если вы уверены, что вам просто нужно вернуть два значения:и затем метод возвращает
Pair
:источник
Вы можете вернуть только одно значение в Java, поэтому самый лучший способ выглядит так:
Вот обновленная версия вашего кода:
источник
Вот действительно простое и краткое решение с SimpleEntry:
Используются только встроенные функции Java, и это дает преимущество типа safty.
источник
Вы должны использовать коллекции, чтобы вернуть более одного возвращаемого значения
в вашем случае вы пишете свой код как
источник
источник
Используйте объект типа Pair / Tuple, вам даже не нужно создавать объект, если вы зависите от Apache commons-lang. Просто используйте класс Pair .
источник
Мне любопытно, почему никто не придумал более элегантное решение для обратного вызова. Поэтому вместо использования возвращаемого типа вы используете обработчик, переданный в метод в качестве аргумента. Пример ниже имеет два противоположных подхода. Я знаю, какой из этих двух вариантов более элегантен для меня. :-)
источник
Вам не нужно создавать свой собственный класс для возврата двух разных значений. Просто используйте HashMap, как это:
У вас даже есть преимущество безопасности типов.
источник
На мой взгляд, лучше всего создать новый класс, конструктор которого является необходимой вам функцией, например:
Затем просто используйте конструктор, как если бы вы использовали функцию:
и вы можете использовать pR.sth1, pR.sth2 как «2 результата функции»
источник
Вы также можете отправлять изменяемые объекты в качестве параметров, если вы используете методы для их изменения, они будут изменены, когда вы вернетесь из функции. Он не будет работать с такими вещами, как Float, так как он неизменен.
Результат: Рутгер
источник
Вернуть массив объектов
источник
Во-первых, было бы лучше, если бы в Java были кортежи для возврата нескольких значений.
Во-вторых, используйте самый простой код
Pair
класс или используйте массив.Но, если вы делаете потребность вернуть пару, рассмотрим , что концепция представляет (начиная с его имена полей, то имя класса) - и играет ли большую роль , чем вы думали, и если это поможет ваш общий дизайн , чтобы иметь явная абстракция для него. Может быть, это
code hint
...Пожалуйста, обратите внимание: я не догматично говорю, что это поможет, а просто смотрю, чтобы увидеть, если это ... или если нет.
источник
и это, как вы это делаете в JS:
return { objA, valueB }
. Я знаю, что это оффтоп, но я не могу оставить этот комментарий, увидев, как в Java должен быть реализован целый новый класс. JavaScript - перестань тратить свою жизнь и начни писать сценарии!источник