Я новичок в Java и программировании в целом, поэтому извините, если я путаю некоторые концепции, в моем коде у меня есть объект с именем cr, который представляет собой массив в построенном классе Menu из класса ControllerRoute, этот экземпляр мне нужно передать методу в классе UpdateAndDelete, который выполняет процесс обновления и удаления CRUD, но код в методе читается не как массив, а как объект ControllerRoute. Я пробовал использовать разные имена в параметре и использовать super.cr, но у меня это не сработало.
Меню предназначено для использования различных действий CRUD, но вот часть обновления, которая вызывает проблемы.
import javax.swing.JOptionPane;
import java.io.File;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
public class Menu{
private ControllerRoute cr = new ControllerRoute(100);
UpdateAndDelete ud = new UpdateAndDelete();
public void updateRoute(){
ControllerRoute ur = new ControllerRoute(0);
int id;
id = Integer.parseInt(JOptionPane.showInputDialog(null,"Enter an Id"));
ud.updateRoutes(id, cr);
}
}
Route наряду с ControllerRoute — это классы, используемые для создания массива и откуда приходит объект cr.
public class Route{
private int id;
private String name;
public Route () {}
public Route(int id, String name){
this.id = id;
this.name = name;
}
}
public class ControllerRoute extends Menu{
Route[] routes;
public ControllerRoute(int size){
routes = new Route[size];
}
}
UpdateAndDelete — это метод, который запрашивает cr для выполнения процесса обновления и удаления частей массива. Вот где в каждом месте, где есть cr, появляется ошибка, потому что он либо не может найти символ, либо не может распознать cr как массив.
import javax.swing.JOptionPane;
public class UpdateAndDelete{
public Route updateRoutes(int id, ControllerRoute cr){
int pos = -1;
String nwname;
for(int i=0; i<cr.length; i++){
if(id == cr[i].getId()){
pos=i;
}
}
return null;
}
}
Ошибки найдены:
ошибка: не удается найти символ в строке: for(int i=0; i UpdateAndDelete.java:14: ошибка: требуется массив, но ControllerRoute найден в строках: если (id == cr[i].getId()){ Cr[pos] = новый маршрут (id, nwname); Сначала я попытался изменить параметр, либо имя массива, либо тип рядом с ним между int, String, Array. Route[] и последний — ControllerRoute. После этого я попытался использовать super.cr, чтобы посмотреть, смогу ли я взять его прямо из меню, но это дало проблемы с такими методами, как .length. Это дает те же ошибки. Другая вещь, которую я пробовал с super, заключалась в попытке создать другой массив в UpdateAndDelete и использовать super.cr для преобразования его значения в него (пример: pj = super.cr), но выдавало ошибку, что массив не совместим с ControllerRouteimport javax.swing.JOptionPane;
public class UpdateAndDelete extends Menu{
public Route updateRoutes(int id, ControllerRoute cr){
int pos = -1;
String nwname;
for(int i=0; i<super.cr.length; i++){
if(id == super.cr[i].getId()){
pos=i;
}
}
return null;
}
}
1 ответ
ControllerRoute не является массивом. у него есть атрибут, который является массивом. попробуйте написать геттер для маршрутов в ControllerRoute и использовать его для получения массива. ud.updateRoutes(id, cr.getRoutes());
Похожие вопросы
Новые вопросы
java
Java — это высокоуровневый объектно-ориентированный язык программирования. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег часто используется вместе с другими тегами для библиотек и/или фреймворков, используемых разработчиками Java.
cr
не является массивом. Таким образом, первая строка не имеет смысла, а вторая строкаcr[i].getId()
просто неверна:cr.getId()
просто уберите квадратные скобки []. Похоже, вы скопировали какой-то код из другого места, в котором использовались массивы, и вы не понимаете, что копируете.