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

Java存储对象的数组打印时无法显示String类型值如何解决

问题原因
  • Scanner输入逻辑存在错误:scanner.nextInt()方法只会读取输入的整数值,不会消费整数末尾的换行符;且你在读取商品编码后额外调用了一次scanner.nextLine(),会导致第一次输入后,后续循环读取商品编码时要么读到空字符串,要么读取逻辑错位,最终productCode字段赋值异常。
  • 自定义Bill类未重写toString()方法:Java中直接打印对象默认会调用Object类的toString()方法,输出格式为类全限定名@哈希值,不会按照你需要的格式输出类属性值。
修复方案

1. 修正Scanner输入逻辑

删除读取商品编码后多余的scanner.nextLine(),每次读取完整数后主动调用scanner.nextLine()消费遗留的换行符,修正后代码如下:

for(int i = 0; i < billsList.length; i++) {
    System.out.println("Digit the code of the product: ");
    productCode = scanner.nextLine();
    System.out.println("Digit the kilos sold: ");
    kilos = scanner.nextInt();
    System.out.println("Digit the price: ");
    price = scanner.nextInt();
    // 消费nextInt遗留的换行符,避免影响下一次nextLine读取
    scanner.nextLine();
    
    Bill bills = new Bill(productCode,kilos,price);
    billsList[i] = bills;
}

2. 给Bill类重写toString()方法

在Bill类中添加自定义toString()方法,指定对象的打印格式,示例如下:

@Override
public String toString() {
    return "productCode:" + productCode + ",kilosSold:" + kilosSold + ",price:" + price;
}

修改完成后直接打印Bill对象即可正常输出所有属性值。

内容的提问来源于stack exchange,提问作者Jose Erasmo Hernandez Yate

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 13:09:04