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

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

Войти
Регистрация
Восстановить пароль
 
Seroga7
6 / 6 / 1
Регистрация: 08.12.2012
Сообщений: 147
#1

Передача значений в массив - Программирование Android

20.11.2014, 17:29. Просмотров 350. Ответов 4
Метки нет (Все метки)

Есть класс, в котором реализовано создание двухмерного динамического массива, заполненного нулями по умолчанию
Размерность передается из основной программы в объект выше упомянутого класса. Далее по тапу, координаты преобразовываются и записываются в массив, и тут выдает ошибку..

Класс, создающий массив:
Кликните здесь для просмотра всего текста

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import java.util.ArrayList;
 
public class GameLogic {
 
    private ArrayList[] matrix;
 
    public void createArray(int M, int N){
        matrix = (ArrayList[])new ArrayList[M];
        for (int i = 0; i < M; ++i){
            matrix[i] = new ArrayList();
            for (int j = 0; j < N; ++j){
                matrix[i].add(j,0);
            }
        }
    }
 
    public void setMatrix(int x, int y, int value){
        matrix[y].set(x, value);
    }
}

Класс, в котором происходят вычисления:
Кликните здесь для просмотра всего текста

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
import ...
 
public class Draw extends View {
 
    float pg_width = 15;
    float pg_height = 10;
 
    GameLogic L = new GameLogic();
 
    float touchX = 0, touchY = 0;
    ...
 
    @Override
    public void onDraw(Canvas c) {
        super.onDraw(c);
 
        L.createArray((int)pg_height, (int)pg_width);     
        ...
        float cell;                      //задается ниже
        float corner_x, corner_y; //задаются ниже
        ...      
        float roundX = touchX - (touchX - corner_x)%cell;
        float roundY = touchY - (touchY - corner_y)%cell;
 
        int cordX = (int)((touchX - corner_x)/cell)+1;
        int cordY = (int)((touchY - corner_y)/cell)+1;
        L.setMatrix(cordX,cordY,1);
 
    }
 
    public boolean onTouchEvent(MotionEvent event) {
        if(event.getAction() == MotionEvent.ACTION_DOWN)
        {
            touchX = event.getX();
            touchY = event.getY();
            invalidate();
        }
        return true;
    }
}
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.11.2014, 17:29
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Передача значений в массив (Программирование Android):

Передача значений между Activity - Программирование Android
Есть 2 Activity, Main и Two. В Main - TextView. в Two - Button и Edittext (Decimal) Как мне передать с Two в Main значение указное в...

Передача значений между активностями - Программирование Android
Добрый день. Как можно передавать значения переменных между активностями? У меня задача такая: имею четыре активности, одна это заголовок,...

Передача значений между классами - Программирование Android
Как передать значение int-овой переменной из одного класса в другой? Всё было бы просто если оба класса были унаследованы от Activity....

MultiSelectListPreference как получить массив выбранных значений? - Программирование Android
Здравствуйте! Использую, multiselectlistpreference для выбора нужных дней недели... Вопрос в том, как потом получить строковый массив...

Передача значений в бд - PHP БД
Почему приходят пустые строки? И почему отправляется только одна запись, чтобы отправить еще, нужно перейти(не обновить) снова на страницу?...

Передача значений - C#
Не могу понять почему в массив приходят пустые значения? По идее при вводе двоичного кода 11110110, программа должна посчитать...

4
CoolMind
419 / 402 / 65
Регистрация: 06.10.2012
Сообщений: 1,727
20.11.2014, 17:36 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Seroga7, судя по циклам, нумерация массива у вас идёт от 1 до M и от 1 до N. Что странно.
А вот это вообще удивило:
Java
1
2
3
        int cordX = (int)((touchX - corner_x)/cell)+1;
        int cordY = (int)((touchY - corner_y)/cell)+1;
        L.setMatrix(cordX,cordY,1);
У вас, случаем, индексы не отрицательные?
1
Seroga7
6 / 6 / 1
Регистрация: 08.12.2012
Сообщений: 147
20.11.2014, 18:05  [ТС] #3
CoolMind, точно, у меня же "тап" по умолчанию в (0,0), т.е действительно отрицательные индексы выходят.
Спасибо!
0
CoolMind
419 / 402 / 65
Регистрация: 06.10.2012
Сообщений: 1,727
21.11.2014, 09:37 #4
Seroga7, пожалуйста. Надеюсь, помог. Я сначала заметил, что изначально у вас координаты установлены в (0, 0), но потом подумал, что они могут быть переопределены в onTouchEvent, а после вызван метод onDraw. Но, наверное, onDraw вызывается первым, и я решил написать вам, что возможна проблема с индексами.
0
Seroga7
6 / 6 / 1
Регистрация: 08.12.2012
Сообщений: 147
21.11.2014, 09:47  [ТС] #5
CoolMind, именно так и было, установил в "нули" давненько, а вернулся дописывать код, не пробежавшись по уже готовому)
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.11.2014, 09:47
Привет! Вот еще темы с ответами:

Передача значений - C#
Здравствуйте, имеется 3 таблицы (отн. многим ко многим). В таблице1 Id_client и &quot;имя&quot; в таблице2 Id_sobitie и &quot;событие&quot; нужно...

Передача значений! - C++ Builder
Здраствуйте! В общем для примера есть прогамма (ScrollBar двигает стрелку на индикаторе (Это чиста для примера)) : #include...

Передача значений - C#
Собираю при помощи объекта данные из других форм, и в другой считаю. Вроде делаю всё правильно, но всё равно в результате выдаёт ноль ((...

дано два массива по 10 значений . получить третий массив 10 с суммой соответствующих значений - Assembler
помогите кто чем может, срочно нужно)


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

Или воспользуйтесь поиском по форуму:
5
Yandex
Объявления
21.11.2014, 09:47
Ответ Создать тему
Опции темы

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