Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
b0nny
3 / 1 / 0
Регистрация: 11.11.2013
Сообщений: 346
#1

Возвращение функий двух значений - Android

09.10.2015, 16:09. Просмотров 203. Ответов 2
Метки нет (Все метки)

Смотрите...
У меня два числа, которые вещественные (могут быть).
Я каждое (!) число разделил на два ArrayList то что до точки и после.
Есть функция, которая складывает столбиком.

Сначала мы должны складывать дробную часть, от неё мы должны вернуть ArrayList result и temp (если сложение чисел превышает sys - Систему счисления) и передать temp уже функции для сложения целой части.

Вот я не знаю, как сделать, чтобы функция возвращала ArrayList и int, т.е. два значения.
B нужно ли написать новую функцию для дробной части, т.к. для функции дробной части нужно передать temp, а не увеличивать ArrayList.

// Для целой части
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public static ArrayList<Integer> Addition(int length, int sys, ArrayList<Integer> num1, ArrayList<Integer> num2, ArrayList<Integer> result) {
        int temp = 0;
        for (int i = 0; i < length; i++) {
            int tempA = (num1.size() > i) ? num1.get(i) : 0; // Временное значение i-го разряда из первого числа
            int tempB = (num2.size() > i) ? num2.get(i) : 0; // Временное значение i-го разряда из второго числа
            result.add(tempA + tempB + temp);
            if (result.get(i) >= sys) {
                result.set(i, result.get(i) - sys);
                temp = 1;
            } else {
                temp = 0;
            }
        }
 
        // Увеличиваем массив
        if (temp == 1) {
            result.add(temp);
        }
        return result;
    }
http://prntscr.com/8pgb92 - картинка. Как должно быть написал.
Тут просто использовал в обоих случаях одну функцию.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.10.2015, 16:09     Возвращение функий двух значений
Посмотрите здесь:

Android Передача значений между классами
Android set и get нескольких значений
Передача значений между Activity Android
Передача значений в массив Android
Settings Activity - При нажатии клавиши "Назад" не происходит возвращение на главный активити Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
YuraAAA
1565 / 1307 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
09.10.2015, 16:19     Возвращение функий двух значений #2
b0nny, не совсем понял что Вы хотите, но по видимому Вам нужен класс-обёртка (wrapper)

Java
1
2
3
4
5
6
public class Wrapper {
 
    public ArrayList<Integer> list;
    public int myInt;
 
}
и где Вам надо вернуть два значения, то

Java
1
2
3
4
5
6
7
public Wrapper myMethod () {
.....
Wrapper w = new Wrapper();
w.list = mylist;
w.myInt = myInt;
return w;
}
b0nny
3 / 1 / 0
Регистрация: 11.11.2013
Сообщений: 346
09.10.2015, 18:41  [ТС]     Возвращение функий двух значений #3
Пока я это не понимаю...
Решил из одной функции вернуть пока temp для следующей функции.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
int temp = 0;
AdditionPart2(length2, sys, arrayNum1part2, arrayNum2part2, result2);
Toast.makeText(this, Integer.toString(temp), Toast.LENGTH_SHORT).show();
Addition(length, sys, temp, arrayNum1, arrayNum2, result);
 
public static ArrayList<Integer> Addition(int length, int sys, int temp, ArrayList<Integer> num1, ArrayList<Integer> num2, ArrayList<Integer> result) {
        for (int i = 0; i < length; i++) {
            int tempA = (num1.size() > i) ? num1.get(i) : 0; // Временное значение i-го разряда из первого числа
            int tempB = (num2.size() > i) ? num2.get(i) : 0; // Временное значение i-го разряда из второго числа
            result.add(tempA + tempB + temp);
            if (result.get(i) >= sys) {
                result.set(i, result.get(i) - sys);
                temp = 1;
            } else {
                temp = 0;
            }
        }
 
        // Увеличиваем массив
        if (temp == 1) {
            result.add(temp);
        }
        return result;
    }
 
    public static int AdditionPart2(int length, int sys, int temp, ArrayList<Integer> num1, ArrayList<Integer> num2, ArrayList<Integer> result) {
        for (int i = 0; i < length; i++) {
            int tempA = (num1.size() > i) ? num1.get(i) : 0; // Временное значение i-го разряда из первого числа
            int tempB = (num2.size() > i) ? num2.get(i) : 0; // Временное значение i-го разряда из второго числа
            result.add(tempA + tempB + temp);
            if (result.get(i) >= sys) {
                result.set(i, result.get(i) - sys);
                temp = 1;
            } else {
                temp = 0;
            }
            temp = 100;
        }
        return temp;
    }
Но почему-то постоянно получаю сообщение - temp = 0, хотя я специально temp = 100 написал. Где ошибка, заметить не могу...
temp = 100;

Добавлено через 1 час 35 минут
А точно...
Java
1
temp = AdditionPart2(length2, sys, temp, arrayNum1part2, arrayNum2part2, result2);
Yandex
Объявления
09.10.2015, 18:41     Возвращение функий двух значений
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru