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

如何解决Java重复局部变量及String无法转换为自定义Pelanggan类的报错?

问题原因说明
  • 第一个报错Duplicate local variable user:同一个方法作用域内不允许声明两个同名的局部变量,你先后声明了String user和Pelanggan user两个同名变量,违反了Java语法规则。
  • 第二个报错Type mismatch: cannot convert from String to Pelanggan:Scanner.nextLine()返回的是String类型的对象,不能直接赋值给自定义的Pelanggan类型的变量,两者类型不兼容。
修复方案

首先需要在你的自定义Pelanggan类中定义存储用户名的属性,以及对应的赋值入口,参考定义如下:

public class Pelanggan {
    // 存储用户名的属性
    private String name;

    // 方案A配套:添加带用户名参数的构造方法
    public Pelanggan(String name) {
        this.name = name;
    }

    // 方案B配套:添加name属性的setter方法
    public void setName(String name) {
        this.name = name;
    }

    // 可选添加getter方法,方便后续读取用户名
    public String getName() {
        return name;
    }
}

方案A:使用带参构造方法初始化实例

public static void main(String[] args) throws Exception {
    System.out.println("Hi, Welcome!");
    
    Scanner inpt = new Scanner(System.in); 
    System.out.print("What can I call u? : ");
    // 单独声明变量存储输入的用户名,不和Pelanggan实例同名
    String userName = inpt.nextLine();
    // 构造实例时直接传入用户名完成赋值
    Pelanggan user = new Pelanggan(userName);
}

方案B:使用setter方法给属性赋值

public static void main(String[] args) throws Exception {
    System.out.println("Hi, Welcome!");
    
    Scanner inpt = new Scanner(System.in); 
    System.out.print("What can I call u? : ");
    String userName = inpt.nextLine();
    Pelanggan user = new Pelanggan();
    // 调用setter方法给实例的name属性赋值
    user.setName(userName);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 11:21:01