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

Java程序读取文件异常,打印String数组出现[Ljava.lang.String;@xxxx问题求助

问题分析与解决

1. 打印数组出现[Ljava.lang.String;@2f7a2457的原因

直接打印数组对象时,Java会调用Object类的toString()方法,输出格式为[L类型;@哈希码——其中[L代表一维数组,java.lang.String是元素类型,后面的是对象哈希值。要正确打印数组内容,有两种可行方式:

  • 导入java.util.Arrays类,使用Arrays.toString(数组名)方法
  • 遍历数组,逐个打印每个元素

2. 代码中的其他逻辑错误

你的代码还存在多处逻辑问题,导致文件读取和数组存储混乱:

  • 字符串比较错误:while((name == "string"))用==比较字符串是错误的,Java中==比较的是对象引用,应该用equals()方法,即while("string".equals(name))
  • 循环结构嵌套错误:while循环内部直接嵌套两个for循环,会导致第一次进入while就执行for循环,逻辑完全混乱,应将for循环移到while循环外,重新梳理读取逻辑
  • 初始值冗余:初始化name = "string"后,第一次while循环会把这个无关字符串存入数组,并非文件内容
  • 元素重复覆盖:第一个for循环会覆盖friendslist中已存入的元素,属于重复逻辑

修复后的代码示例

import java.io.File; 
import java.io.FileNotFoundException;
import java.util.Scanner;
import java.util.Arrays;

public class Friends { // 类名首字母大写,符合Java编码规范

    public static void main(String[] args) throws FileNotFoundException {
        
        String[] friendslist = new String[50];
        String[] birthdates = new String[50];
        
        Scanner input = new Scanner(new File("friends1.txt"));
         
        int friendsamount = 0;
        // 直接读取文件内容,直到无下一行可读取
        while (input.hasNextLine()) {
            friendslist[friendsamount] = input.nextLine();
            // 若文件中是姓名、生日交替存储,可在此读取生日
            // birthdates[friendsamount] = input.nextLine();
            friendsamount++;
            // 防止数组越界
            if (friendsamount >= friendslist.length) {
                break;
            }
        }
        input.close(); // 关闭Scanner资源,避免资源泄漏
     
        // 方式1:用Arrays.toString打印有效元素(截取数组有值部分)
        System.out.println(Arrays.toString(Arrays.copyOf(friendslist, friendsamount)));
        
        // 方式2:遍历打印每个元素
        for (int k = 0; k < friendsamount; k++) {
            System.out.println(friendslist[k]);
        }
    }
}

关键修复说明

  • 替换==为equals()进行字符串比较(修复后代码改用hasNextLine()判断文件内容,逻辑更简洁)
  • 调整循环结构,通过Scanner.hasNextLine()判断文件是否还有内容,逐个读取存入数组
  • 使用Arrays.toString()或循环遍历打印数组内容,解决原打印异常问题
  • 添加资源关闭和数组越界判断,避免潜在运行时问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 23:30:53