Форум программистов, компьютерный форум, киберфорум
Java для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 05.04.2022
Сообщений: 300

Записать list в массив

29.05.2022, 22:15. Показов 2109. Ответов 44

Студворк — интернет-сервис помощи студентам
здравствуйте. у меня такая проблема. мне нужно записать мои листы в двумерный массив для того, чтобы построить график. есть код, который это всё делает. для самопроверки я решила вывести координаты х и у, что они показывают и выходит это:
ожидаемый результат:
Java
1
2
3
4
5
6
х 1
у 120
х 2
у 105
х 3
у 180
и т.д. (всего должно быть 30)
а выводит так:
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
x 1
y 120
x 1
y 120
x 1
y 120
x 1
y 120
x 1
y 120
x 1
y 120
x 1
y 120
x 1
y 120
x 1
y 120
x 1
y 120
x 1
y 120
x 1
y 120
x 1
y 120
x 1
y 120
x 1
y 120
x 1
y 120
x 1
y 120
x 1
y 120
x 1
y 120
x 1
y 120
x 1
y 120
x 1
y 120
x 1
y 120
x 1
y 120
x 1
y 120
x 1
y 120
x 1
y 120
x 1
y 120
x 1
y 120
x 1
y 120
x 1
y 105
x 1
y 105
x 1
y 105
x 1
y 105
x 1
y 105
x 1
y 105
x 1
y 105
x 1
y 105
x 1
y 105
x 1
y 105
x 1
y 105
x 1
y 105
x 1
y 105
x 1
y 105
x 1
y 105
x 1
y 105
x 1
y 105
x 1
y 105
x 1
y 105
x 1
y 105
x 1
y 105
x 1
y 105
x 1
y 105
x 1
y 105
x 1
y 105
x 1
y 105
x 1
y 105
x 1
y 105
x 1
y 105
x 1
y 105
x 1
y 180
x 1
y 180
x 1
y 180
x 1
y 180
x 1
y 180
x 1
y 180
x 1
y 180
x 1
y 180
x 1
y 180
x 1
y 180
x 1
y 180
x 1
y 180
x 1
y 180
x 1
y 180
x 1
y 180
x 1
y 180
x 1
y 180
x 1
y 180
x 1
y 180
x 1
y 180
x 1
y 180
x 1
y 180
x 1
y 180
x 1
y 180
x 1
y 180
x 1
y 180
x 1
y 180
x 1
y 180
x 1
y 180
x 1
y 180
то есть каждую запись по 30 раз.

помогите понять в чём ошибка и как её исправить.

код
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
for (Object ob : list) {
                    for (Object o : list1) {
                        int[][] dot = new int[30][2];
                        for (int id = 0; id < list.size(); id++)
                            dot[id] = new int[]{(int) ob, (int) o};
                        g2.setColor(Color.black);
                        for (int[] crntDot : dot) {
                            g2.drawRect(crntDot[0], crntDot[1], 3, 3);
                            System.out.println("x " + crntDot[0]);
                            System.out.println("y " + crntDot[1]);
                        }
                    }
                }
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.05.2022, 22:15
Ответы с готовыми решениями:

как записать list <Object> в массив double [][] java
у меня имеется некий список, в который записываются значений из определённого диапазона таблицы. мне нужно эти значения записать в массив...

Как с Checked list box записать данные в массив?
Такая задача в Checked list box есть 30 чисел, нужно записать выбранные элементы в двухмерный массив(размер массива не указан), что бы...

Как в List записать массив и потом взять его по элементно?
Предположим есть пара переменных (может и больше, но число их известно заранее), а вот число этих пар неизвестно необходимо записать в лист...

44
2287 / 1603 / 400
Регистрация: 26.06.2017
Сообщений: 4,747
Записей в блоге: 1
29.05.2022, 23:25
Для начала стоит вынести g2.setColor(Color.black); из циклов.
Java
1
2
3
4
5
6
7
8
9
int[][] dot = new int[30][2];
g2.setColor(Color.black);
//нужна проверка, что размерность list1 не меньше размерности list
for (int id = 0; id < list.size(); id++) {
     dot[id] = new int[]{(int) list.get(id), (int) list1.get(id)}; 
     g2.drawRect(dot[id][0], dot[id][1], 3, 3);
     System.out.println("x " + dot[id][0]);
     System.out.println("y " + dot[id][1]);
}
1
0 / 0 / 0
Регистрация: 05.04.2022
Сообщений: 300
30.05.2022, 07:59  [ТС]
Uswer, да, запустила работает. спасибо! а вы не подскажите как мне расположить эти точки на графике соответственно моим координатам?
0
2287 / 1603 / 400
Регистрация: 26.06.2017
Сообщений: 4,747
Записей в блоге: 1
30.05.2022, 10:05
Цитата Сообщение от ValentinaVal20 Посмотреть сообщение
как мне расположить эти точки на графике соответственно моим координатам?
А разве строка 6 не делает этого?

Добавлено через 4 минуты
Вообще для координат графических элементов есть готовый класс Point. Рекомендую использовать его, а не городить списки и массивы.
0
0 / 0 / 0
Регистрация: 05.04.2022
Сообщений: 300
30.05.2022, 12:19  [ТС]
А как в классе point прописать все то, что мне нужно?

Добавлено через 54 минуты
Uswer,
Цитата Сообщение от Uswer Посмотреть сообщение
А разве строка 6 не делает этого?
это да, но они все сейчас в одном месте, а нужно, чтобы растянулись по всей оси
0
2287 / 1603 / 400
Регистрация: 26.06.2017
Сообщений: 4,747
Записей в блоге: 1
30.05.2022, 13:56
Цитата Сообщение от ValentinaVal20 Посмотреть сообщение
они все сейчас в одном месте, а нужно, чтобы растянулись по всей оси
Укажите к какому элементу управления относится объект g2 и приведите несколько смежных координат, которые Вы хотите отобразить.
Цитата Сообщение от ValentinaVal20 Посмотреть сообщение
А как в классе point прописать все то, что мне нужно?
Создайте свой класс, а Point в нём будет отвечать за координаты. Вот пример такого класса:
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
import java.awt.Dimension;
import java.awt.Point;
 
public class MyClass {
    Point position; // координаты
    String description; //некое описание
    Dimension size; // размеры 
    
    public MyClass(Point pos, String desc, Dimension size) {
        this.position = pos;
        this.description=desc;
        this.size = size;
    }    
}

Пример использования класса MyClass:
Java
1
2
3
4
5
6
7
8
9
import java.awt.Dimension;
import java.awt.Point;
 
public class Main {
    public static void main(String[] args) {
        MyClass test = new MyClass(new Point(10,20),"test", new Dimension(3,3));
        System.out.println("The object name is "+test.description+" with X="+test.position.x+" and height="+test.size.height);
    }
}
0
0 / 0 / 0
Регистрация: 05.04.2022
Сообщений: 300
30.05.2022, 14:06  [ТС]
Uswer, А если использовать Ваш код, который изначальный, то как мне можно перенести начальную точку в начало координат человеческое? Ведь в джава координаты начинаются с верхнего левого угла
0
2287 / 1603 / 400
Регистрация: 26.06.2017
Сообщений: 4,747
Записей в блоге: 1
30.05.2022, 14:36
Цитата Сообщение от ValentinaVal20 Посмотреть сообщение
как мне можно перенести начальную точку в начало координат человеческое?
Возможно Вы будете удивлены, но чисто математически
Вы так и не указали на какой поверхности (какого элемента управления) рисуете. Вообще для отображения графиков существуют специализированные библиотеки, вот первые две ссылки из поисковика тыц, тыц. Если же всё равно будете делать собственное отображение данных, то приводите координаты к координатам для отображения также в своём коде и не забывайте о масштабе пересчёта и возможном масштабировании элемента управления, на котором рисуете.
Цитата Сообщение от ValentinaVal20 Посмотреть сообщение
Ведь в джава координаты начинаются с верхнего левого угла
Не то что бы в Java, а почти во всех платформах так.
0
0 / 0 / 0
Регистрация: 05.04.2022
Сообщений: 300
30.05.2022, 14:42  [ТС]
А можете как-то показать это на примере кода?

Добавлено через 2 минуты
Uswer, и можно ли это как то реализовать методом moveTo?
0
2287 / 1603 / 400
Регистрация: 26.06.2017
Сообщений: 4,747
Записей в блоге: 1
30.05.2022, 15:55
Цитата Сообщение от ValentinaVal20 Посмотреть сообщение
А можете как-то показать это на примере кода?
Вот:
Кликните здесь для просмотра всего текста
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
41
42
43
44
45
46
import java.awt.Dimension;
import java.awt.Point;
import java.util.*;
 
public class Main
{
    public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList(){{add(1);add(2);add(4);}};
        ArrayList<Integer> list1 = new ArrayList(){{add(108);add(112);add(124);}};
        
        ArrayList<MyClass> grData = toMyArray(list, list1);
        System.out.println("Original data");
        PrintMyArray(grData);
 
        // масштабируем координаты в наборе данных
        for (MyClass item : grData) {
            item.position = scalePt(item.position, 0.5);
        }
        
        System.out.println("Scale data");
        PrintMyArray(grData);
    }
    
    private static Point scalePt(Point pt, double coefficient) {
        return new Point((int) (pt.x * coefficient), (int) (pt.y * coefficient));    
    }
    
    private static ArrayList<MyClass> toMyArray(List<Integer> list1, List<Integer> list2) {
        ArrayList<MyClass> result = new ArrayList<MyClass>();
        MyClass item;
        if(list1.size() != list2.size()) {
            throw new IllegalArgumentException("Exception: different length lists.");
        }
        for(int i=0; i < list1.size(); i++) { //преобразуем списки в массив объектов MyClass
            item = new MyClass(new Point(list1.get(i),list2.get(i)), Integer.toString(i), new Dimension(3,3));
            result.add(item);
        }
        return result;
    }
    
    private static void PrintMyArray(List<MyClass> printData) {
        for(MyClass item : printData) {
            System.out.println("Item name is: "+item.description+" with x="+item.position.x + " and y="+item.position.y);
        }
    }
}

Вывод
Original data
Item name is: 0 with x=1 and y=108
Item name is: 1 with x=2 and y=112
Item name is: 2 with x=4 and y=124
Scale data
Item name is: 0 with x=0 and y=54
Item name is: 1 with x=1 and y=56
Item name is: 2 with x=2 and y=62
0
0 / 0 / 0
Регистрация: 05.04.2022
Сообщений: 300
30.05.2022, 16:01  [ТС]
Uswer, а можно немного комментариев по листингу?
0
2287 / 1603 / 400
Регистрация: 26.06.2017
Сообщений: 4,747
Записей в блоге: 1
30.05.2022, 21:19
Да чего тут собственно комментировать всё очевидно. Но всё же вот.
Кликните здесь для просмотра всего текста
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
import java.awt.Dimension;
import java.awt.Point;
import java.util.*;
 
public class Main
{
    public static void main(String[] args) {
        // создадим два числовых списка для тестирования
        ArrayList<Integer> list = new ArrayList(){{add(1);add(2);add(4);}};
        ArrayList<Integer> list1 = new ArrayList(){{add(108);add(112);add(124);}};
        
        // Преобразуем числовые списки в один, состоящий из классов MyClass
        // При этом входные списки используем как координаты
        ArrayList<MyClass> grData = toMyArray(list, list1);
        
        // отобразим получившийся список
        System.out.println("Original data");
        PrintMyArray(grData); // выводит весь список из параметра
 
        // масштабируем координаты в наборе данных
        for (MyClass item : grData) {
            // запишем в свойство position новую координату для каждого экземпляра списка 
            // новая координата получена путём умножения на коэффициент 
            item.position = scalePt(item.position, 0.5); 
        }
        
        // отобразим изменённый список
        System.out.println("Scale data");
        PrintMyArray(grData);
    }
    // возвращает новую точку путём умножения свойств исходной pt на коэффициент coefficient
    private static Point scalePt(Point pt, double coefficient) {
        return new Point((int) (pt.x * coefficient), (int) (pt.y * coefficient));    
    }
    // возвращает список экземпляров класса MyClass, в которых координаты X и Y образуются
    // из списоков list1 и list2 соответственно
    private static ArrayList<MyClass> toMyArray(List<Integer> list1, List<Integer> list2) {
        ArrayList<MyClass> result = new ArrayList<MyClass>();
        MyClass item;
        // если входные списки разного размера, то выбросим исключение
        if(list1.size() != list2.size()) { 
            throw new IllegalArgumentException("Exception: different length lists.");
        }
        // наполним спискок объектами MyClass
        for(int i=0; i < list1.size(); i++) { 
            item = new MyClass(new Point(list1.get(i),list2.get(i)), Integer.toString(i), new Dimension(3,3));
            result.add(item);
        }
        return result;
    }
    // выводит описание и координаты X и Y каждого элемента списка printData
    private static void PrintMyArray(List<MyClass> printData) {
        for(MyClass item : printData) { // перебираем весь список
            System.out.println("Item name is: "+item.description+" with x="+item.position.x + " and y="+item.position.y);
        }
    }
}
0
0 / 0 / 0
Регистрация: 05.04.2022
Сообщений: 300
30.05.2022, 21:47  [ТС]
Uswer, скажите пожалуйста, а как можно подправить расстояние между точками? оно у меня сильно большое
0
2287 / 1603 / 400
Регистрация: 26.06.2017
Сообщений: 4,747
Записей в блоге: 1
30.05.2022, 21:55
Создание первичных списков "списки для тестирования" излишне (приведено только в рамках текущей темы). Построение списка grData следует делать сразу из исходных данных.
Метод scalePt тоже можно перенести в класс MyClass.
0
0 / 0 / 0
Регистрация: 05.04.2022
Сообщений: 300
30.05.2022, 21:56  [ТС]
Uswer, но меня сейчас интересует ваш самый первый код. как там можно изменить расстояние между точками?
0
2287 / 1603 / 400
Регистрация: 26.06.2017
Сообщений: 4,747
Записей в блоге: 1
30.05.2022, 21:56
Цитата Сообщение от ValentinaVal20 Посмотреть сообщение
как можно подправить расстояние между точками?
Масштабированием графика, покажите Ваш код.
0
0 / 0 / 0
Регистрация: 05.04.2022
Сообщений: 300
30.05.2022, 22:02  [ТС]
Uswer,
Java
1
2
3
4
5
6
7
8
9
10
int[][] dot = new int[30][2];
                        g2.setColor(Color.black);
                        GeneralPath path = new GeneralPath();
 
                        for (int id = 0; id < list.size(); id++) {
                            path.moveTo(xn, (int) list1.get(id));
                            dot[id] = new int[]{(int) list.get(id), (int) list1.get(id)};
                            g2.drawRect((int) (dot[id][0]*hi*gridWidth/20), (int) (dot[id][1]*hi), 3, 3);
                            g2.draw(path);
                        }
и сразу встречный вопрос, что я не так передаю в методе moveTo, что оно не переносит начало координат?
0
2287 / 1603 / 400
Регистрация: 26.06.2017
Сообщений: 4,747
Записей в блоге: 1
30.05.2022, 23:02
ValentinaVal20, извините проверить или исправить код не могу, т.к. у меня нет IDE для Java.
0
0 / 0 / 0
Регистрация: 05.04.2022
Сообщений: 300
30.05.2022, 23:06  [ТС]
Uswer, тогда может быть подскажите что я не так передаю в moveTo?
0
2287 / 1603 / 400
Регистрация: 26.06.2017
Сообщений: 4,747
Записей в блоге: 1
31.05.2022, 09:10
Метод moveTo не переносит начало координат, он добавляет новую точку и делает её текущей.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
31.05.2022, 09:10
Помогаю со студенческими работами здесь

Записать в файл по очереди элементы List<string> и List<char>
У меня есть List с string элементами и есть List с char элементами. Как сделать чтобы у файл записывались последователь сначало string...

Как пройти по List, отыскать дубликаты и записать их в другой List?
Добрый вечер, у меня есть List из 10 элементов, мне необходимо найти в нем все повторяющиеся элементы и записать в другой List. Если вместо...

Записать в файл list (очередь) объектов, в которых содержатся строки string, и считать с файла обратно в list
Извините подскажите пожалуйста, как записать list(очередь) объектов в которых содержаться string, и считать с файла обратно в list;...

Как записать List точек (TwoPoint) в массив точек и передать в FillPolygon?
Есть List точек (TwoPoint). В нем хранятся точки. Мне надо эти точки записать из List в массив точек и передать в FillPolygon. Как это...

из заданного теста выбрать цифры и записать в массив N ,а буквы - в массив B .Все остальные символы записать в массив S
Привет всем.Помогиет пожалуйста решить задачку из заданного теста выбрать цифры и записать в массив N ,а буквы - в массив B .Все...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru