该应用程序的目标如下:我想创建“Flugzeug”(飞机的德语单词)类的对象(飞机)。我想创建一个引用对象的不同属性的数组。
问题是(据我所知)一个数组只能引用完全相同类型的变量。
如何更改我的程序以使其正常工作?是否不可避免地为每个属性(例如,为每个不同类型的变量)创建一个数组?
代码:
public class Fluggesellschaft {
public static void main(String[] args) {
Flugzeug [] airline = new Flugzeug [4];
for (int i = 0; i < 4; i=i+1){
airline[i] = new Flugzeug ();
airline[0].type = "A320";
airline[0].idNumber = "1";
airline[0].seats = "165";
airline[0].velocity = "890";
airline[0].range = "12600";
airline[1].type = "Boeing 747";
airline[1].idNumber = "2";
airline[1].seats = "416";
airline[1].velocity = "907";
airline[1].range = "12700";
airline[2].type = "Avro RJ 85";
airline[2].idNumber = "3";
airline[2].seats = "93";
airline[2].velocity = "760";
airline[2].range = "2200";
airline[3].type = "Airbus 380";
airline[3].idNumber = "4";
airline[3].seats = "516";
airline[3].velocity = "907";
airline[3].range = "12000";
}
for (int i=0; i < 4; i=i+1) {
airline[i].printInfo();
double time = airline[i].getTime(6320); //distance from Zurich to New York
System.out.println("duration: " + time + " h");
int capacity = airline[i].getCapacity(365);
System.out.println("capacity: " + capacity + " passengers / year");
}
}
}
public class Flugzeug {
String type;
int idNumber;
int seats;
double velocity;
double range;
double distance;
int days;
public void printInfo() {
System.out.println("type: " + this.type);
System.out.println("ID-number: " +this.idNumber);
System.out.println("seats: " + this.seats);
System.out.println("velocity: " + this.velocity);
System.out.println("range: " + this.range);
}
public double getTime (double dist) {
double result = 0;
result = dist / velocity;
double time = result;
return time;
}
public int getCapacity(int days) {
int capacity = seats * days;
return capacity;
}
}
最佳答案
您问题的核心是:
one single array can only refer to variables of the exact same type.
这是正确的(或者大部分是正确的,数组的所有元素必须具有共同的基本类型,但这现在不是一个相关的区别)。
但是数组内部的类型是 Flugzeug
,而不是 String
!
因此数组的每个元素都必须是 Flugzeug
。这并不意味着该类的字段必须全部共享单一类型(事实上,正如您所发布的那样,它们并不共享)。
看这一行:
airline[0].idNumber = "1";
这几乎是正确的,但由于idNumber
是一个int
,您必须为其分配一个int
值(例如 1
) 而是:
airline[0].idNumber = 1;
第二个(大多不相关)问题是您尝试访问创建它们的循环内的所有 4 个 Flugzeug
实例。这意味着当您在创建第一个实例(仅!)后尝试访问第二个实例时,它将崩溃:
替换这个:
for (int i = 0; i < 4; i=i+1) {
airline[i] = new Flugzeug ();
airline[0].type = "A320";
airline[1].type = "Boeing 747";
airline[2].type = "Avro RJ 85";
airline[3].type = "Airbus 380";
}
这样:
for (int i = 0; i < 4; i=i+1) {
airline[i] = new Flugzeug ();
}
airline[0].type = "A320";
airline[1].type = "Boeing 747";
airline[2].type = "Avro RJ 85";
airline[3].type = "Airbus 380";
关于java - 类型不匹配无法从 String 转换为 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59561244/