Возврат нескольких значений из метода
Здравствуйте! Собственно вопрос, какие есть варианты вернуть из метода несколько значений?
На ум приходит только массив.
В C# было слово out.
Допустим, что возвращать хочу примитивные типы, возможно разного типа(массив object[]? ), они между собой довольно независимы
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Возврат нескольких значений из метода не знаем сколько таких значений
Здравствуйте! Собственно вопрос: как возвращать <несколько> значений из метода если заранее.
Возврат нескольких переменных из метода с async Task
Пытаюсь реализовать возврат двух переменных, компилятор выдает ошибку: Ошибка CS1001 Требуется.
Возврат двух значений из метода
Доброго времени суток, господа. Столкнулся с проблемой: нужно возвратить два значения с одного.
Передача параметров и возврат значений из асинхронного метода
Для примера есть метод, который по замыслу должен в асинхронном режиме возвращать содержимое.
154 / 154 / 10
Регистрация: 16.10.2012
Сообщений: 354
Записей в блоге: 1
Сделайте класс и верните из метода экземпляр.
Заблокирован
сделать объект, в котором полями будут все нужные значения и возвращать его?
опоздал немного с ответом
Регистрация: 11.07.2013
Сообщений: 241
Сообщение от Gibby 
Сделайте класс и верните из метода экземпляр.
А это вообще распространенная методика?
154 / 154 / 10
Регистрация: 16.10.2012
Сообщений: 354
Записей в блоге: 1
Сообщение от OxomHuK 
А это вообще распространенная методика?
По-моему, это единственно верная методика в 99,9% случаев.
2000 / 1427 / 92
Регистрация: 25.11.2010
Сообщений: 3,611
Сообщение от Gibby 
По-моему, это единственно верная методика в 99,9% случаев.
Это единственно верная методика в 100% случаев. Потому что если данные связаны — для них можно сделать отдельный класс. Если не связаны — Вы не должны этого хотеть, т.к. это желание является нарушением SRP.
Регистрация: 21.04.2013
Сообщений: 52
Сообщение от OxomHuK 
возвращать хочу примитивные типы, разного типа, они между собой довольно независимы
чисто теоритически
Сообщение от verylazy 
сделать объект, в котором полями будут все нужные значения и возвращать его
но из моей куцей практики — можно создать несколько полей класса. метод, который сейчас возвращает примитивы — его сделать так, чтоб вообще ничего не возвращал, а только изменял внутренние переменные класса.
результаты работы метода, соответственно, получать через геттеры. это юзабельно если методы не равнозначные — делают разные вещи и, вероятно, должны быть в разных классах)
2000 / 1427 / 92
Регистрация: 25.11.2010
Сообщений: 3,611
Сообщение от Nsbaq 
но из моей куцей практики — можно создать несколько полей класса. метод, который сейчас возвращает примитивы — его сделать так, чтоб вообще ничего не возвращал, а только изменял внутренние переменные класса.
результаты работы метода, соответственно, получать через геттеры. это юзабельно если методы не равнозначные — делают разные вещи и, вероятно, должны быть в разных классах)
Можно. Можно вообще сделать все поля и методы public static и работать с глобальными переменными. Мы обсуждаем все варианты или только правильные? Эти поля класса логически являются частью состояния того класса, в котором реализуется метод?
да я с сарказмом) меня привлекли к проекту, где каждый класс начинается с объявления 20и или более переменных, из которых от силы две используются во вне. и ни одну из этих 20и сделать локальными нельзя — все используются по крайней мере в двух методах. и мне говорят, мол, каждый молодой разработчик считает, что сможет сделать лучше) хотя речь не идет и том, чтоб по-другому сделать, а просто уже работающее сделать эффективнее. такие чувства 🙂
| Меню пользователя @ Nsbaq |
Сообщение от OxomHuK 
Допустим, что возвращать хочу примитивные типы, возможно разного типа
Переходи на Scala:
1 2 3 4 5
def func(i: Int, d: Double): (Int, Double) = (i + 1, d * 2.5) val (i, d) = func(1, 2) print(s"i = $i, d = $d")
Возвращение нескольких значений в Java
Вы можете вернуть только одно значение. При необходимости вы можете вернуть несколько значений в Java с помощью массива или объекта.
Пример
В примере, приведенном ниже, метод calculate() принимает две целочисленные переменные, выполняет сложение, вычитание, умножение и деление на них, сохраняя результаты в массиве и возвращая массив.
public class ReturningMultipleValues < static int[] calculate(int a, int b)< int[] result = new int[4]; result[0] = a + b; result[1] = a - b; result[2] = a * b; result[3] = a / b; return result; >public static void main(String args[]) < Scanner sc = new Scanner(System.in); System.out.println("Enter the value of a: "); int a = sc.nextInt(); System.out.println("Enter the value of b: "); int b = sc.nextInt(); int[] result = calculate(a, b); System.out.println("Result of addition: "+result[0]); System.out.println("Result of subtraction: "+result[1]); System.out.println("Result of multiplication: "+result[2]); System.out.println("Result of division: "+result[3]); >>
Итог
Enter the value of a: 20 Enter the value of b: 10 Result of addition: 30 Result of subtraction: 10 Result of multiplication: 200 Result of division: 2
Средняя оценка 0 / 5. Количество голосов: 0
Спасибо, помогите другим — напишите комментарий, добавьте информации к статье.
Или поделись статьей
Видим, что вы не нашли ответ на свой вопрос.
Помогите улучшить статью.
Напишите комментарий, что можно добавить к статье, какой информации не хватает.
Как вернуть две переменные в java
4 ноября 2023
Насчёт инкремента и декремента. 1.Постфиксная форма записи это i++. То есть переменной i сначала возвращается текущее значение, а после уже значение i увеличивается на 1. 2.Префиксная форма записи это ++i, то есть сразу значение i увеличится на 1, и после этого сразу же присвоится переменной i.
1 ноября 2023
а как работает %= . остаток от деления х на у?
4 августа 2023

Здесь нет ошибки? Все корректно? Не совсем понятно как будет работать,если будет например 7 чисел,как будет работать сравнение?? По логике просто слева направо должно,а здесь все запутно
Anonymous #3334737 Уровень 10
2 августа 2023
Если проще про постфиксный/префиксный инкремент: (X++) Сначала возвращается текущее значение X (9) для использования в выражении, а затем значение X увеличивается на 1. После выполнения X++,X становится равным 10 (++X) Сначала значение X увеличивается на 1, а затем новое значение (10) возвращается для использования в выражении. После выполнения ++X, X становится равным 10. p.s мог где-то ошибку допустить но всё вроде так)
Возврат нескольких значений из метода в Java
В этом посте будет обсуждаться, как вернуть несколько значений из метода в Java.
Согласно Спецификации языка Java, методы в Java могут возвращать только одно значение за раз. Таким образом, возврат нескольких значений из метода теоретически невозможен в Java. Но красота Java заключается в том, что мы можем делать желаемые вещи с помощью некоторых умных обходных путей. В этом посте представлен обзор некоторых доступных альтернатив для достижения этой цели.
1. Использование POJO экземпляр класса
Это наиболее часто используемый метод для возврата нескольких значений из метода в Java. Идея состоит в том, чтобы вернуть экземпляр класса, содержащего все поля, которые мы хотим вернуть.
Этот класс может быть POJO с общедоступными переменными-членами и общедоступным конструктором для инициализации его полей с требуемыми значениями или JavaBean с соответствующими геттерами и сеттерами для их закрытых переменных-членов и общедоступным конструктором без аргументов.
