You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:解决incompatible types: String cannot be converted to int报错

错误原因及修复方案

核心错误分析

报错incompatible types: String cannot be converted to int的直接原因:

  • Car构造函数第一个参数要求是int类型(对应year属性),但实例化时传入了字符串"2014",类型不匹配。
  • 代码存在隐性问题:Cardemo是Car的私有内部类,不能包含静态main方法(私有内部类无法被外部直接访问,静态方法也不能直接访问非静态内部类结构);另外你没有调用display()方法,就算修复类型问题也不会输出结果。

修复方案(两种可选)

方案一:将year属性改为String类型(匹配输入需求)

如果不需要对年份做数值运算,直接用字符串存储更简单:

public class Car { 
    private String year; // 把int类型改为String
    private String model;  
    private String color;

    // 构造函数第一个参数同步改为String
    Car(String yr, String m, String c){
        year = yr;
        model = m;
        color = c; 
    }

    public void display() {
        System.out.println(year + ", " + model + ", " + color);
    } 

    // 将Cardemo改为public静态内部类,才能正常运行main方法
    public static class Cardemo { 
        public static void main(String[] args) {
            Car car1 = new Car("2014", "SEDAN", "BLACK");
            car1.display(); // 调用display方法输出结果
        }
    }

    private class Color { 
        enum Colors { 
            RED, BLUE, YELLOW, GREEN, BLACK, WHITE
        };
    }

    private class Model {
        enum Models {
            SEDAN, SUV, CONVERTIBLE, HATCHBACK
        };
     }
}

方案二:保持year为int类型,转换输入参数

如果需要年份作为数值使用,把传入的字符串转成int类型:

public class Car { 
    private int year;
    private String model;  
    private String color;

    Car(int yr, String m, String c){
        year = yr;
        model = m;
        color = c; 
    }

    public void display() {
        System.out.println(year + ", " + model + ", " + color);
    } 

    public static class Cardemo { 
        public static void main(String[] args) {
            // 两种方式:直接传int数值,或用Integer.parseInt转换字符串
            Car car1 = new Car(2014, "SEDAN", "BLACK");
            // 或者 Car car1 = new Car(Integer.parseInt("2014"), "SEDAN", "BLACK");
            car1.display();
        }
    }

    private class Color { 
        enum Colors { 
            RED, BLUE, YELLOW, GREEN, BLACK, WHITE
        };
    }

    private class Model {
        enum Models {
            SEDAN, SUV, CONVERTIBLE, HATCHBACK
        };
     }
}

额外优化:利用已定义的枚举类型

你已经定义了Colors和Models枚举,用它们替换字符串参数能让类型更安全:

public class Car { 
    private int year;
    private Model.Models model;  
    private Color.Colors color;

    Car(int yr, Model.Models m, Color.Colors c){
        year = yr;
        model = m;
        color = c; 
    }

    public void display() {
        System.out.println(year + ", " + model + ", " + color);
    } 

    public static class Cardemo { 
        public static void main(String[] args) {
            Car car1 = new Car(2014, Model.Models.SEDAN, Color.Colors.BLACK);
            car1.display();
        }
    }

    // 内部类改为static,才能在静态main方法中访问
    private static class Color { 
        enum Colors { 
            RED, BLUE, YELLOW, GREEN, BLACK, WHITE
        };
    }

    private static class Model {
        enum Models {
            SEDAN, SUV, CONVERTIBLE, HATCHBACK
        };
     }
}

内容的提问来源于stack exchange,提问作者R R

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 22:55:34