java - 类型不匹配无法从 String 转换为 int
问题描述
该应用程序的目标如下:我想创建类“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;
}
}
解决方案
你的问题的核心是:
一个数组只能引用完全相同类型的变量。
这是正确的(或者大部分正确,数组的所有元素都必须有一个共同的基本类型,但现在这不是相关的区别)。
但是你的数组里面的类型是Flugzeug
,不是String
!
所以数组的每个元素都必须是一个Flugzeug
. 这并不意味着该类的字段都必须共享一个类型(实际上,正如您发布的那样,它们没有)。
看看这一行:
airline[0].idNumber = "1";
这几乎是正确的,但既然idNumber
是 anint
你必须给它分配一个int
值(例如1
):
airline[0].idNumber = 1;
第二个(大部分不相关)问题是您尝试访问Flugzeug
创建它们的循环内的所有 4 个实例。这意味着当您在创建第一个实例(仅!)之后尝试访问第二个实例时,它将崩溃:
替换这个:
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";
推荐阅读
- css - 如何在转发器中应用动态类?
- c# - 使用openxml从excel读取时获取浮点数而不是精确字符串
- powerbi - 幂查询 M IN 算子
- html - 将 div 宽度调整为内容 CSS
- git - 在 git push 上将 BitBucket 同步到 VSTS Online
- php - 如何在 bitnami lampstack(aws lightail)中启用邮件功能
- python - Django:向 ForeignKey 字段添加选择
- php - Yii2/PHP/IIS7 - URL 重写和文件权限(漂亮的 URL 问题)
- php - 联系表格 7 从联系表格 7 发送消息时收到垃圾邮件
- python - 角点检测中的非最大抑制