java - 类型不匹配无法从 String 转换为 int

标签 java arrays types

该应用程序的目标如下:我想创建“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/

相关文章:

java - 服务器套接字 : No port Forwarding

python - 如何对这个 python 列表进行分组?

java - 在java中创建oracle类型

java - Json 到 java 对象错误

java - 用于文本的 Hadoop 组合器类

javascript - 如何在 JavaScript/jQuery 中查找数组是否包含特定字符串?

php - mysql_query 在返回时保留在表中创建的数据类型?

collections - Groovy findIndexValues 返回 List<Long>

java - 解析大型 XML 文件并动态生成 SQL 表

javascript - 我可以更改脚本 src 并让 javascript 运行新代码吗?