java - 打印数组时出错

标签 java arrays printing

我得到了这个代码:

import java.util.*;
import java.io.*;

public class Oblig3A{
    public static void main(String[]args){
    OrdAnalyse O = new OrdAnalyse();
    OrdAnalyse.analyseMet();
    }
}

class OrdAnalyse {
    public static void analyseMet() {
    Scanner Inn = new Scanner(System.in);

    try {
        File skrivFil = new File("Opplysning.txt");
        FileWriter fw= new FileWriter(skrivFil);
        BufferedWriter bw = new BufferedWriter(fw);

        Scanner lesFil = new Scanner("Alice.txt");
        int i=0;
        int totalOrd=0;
        int antUnikeOrd=0;

        String[] ordArray = new String[5000];
        int[] antallOrd = new int[5000];

        while(lesFil.hasNext()) {
        String ord = lesFil.next().toLowerCase();
        totalOrd++;
        boolean ut=false;
        int y=0;
        int z=0;

        for(i=0; i<ordArray.length; i++) {
            if (ord.equals(ordArray[i])) {
            antallOrd[i]++;
            ordFraFor=true;
            }
        }
        if(ordFraFor=false) {
            antUnikeOrd++;
            z=0;
            boolean ordOpptelling=false;

            while(ordOpptelling=false) {
            if(ordArray[z] == null) {
                ordArray[z] = ord;
                antallOrd[z]++;
                ordOpptelling=true;
            }
            z++;
            }
        }
        }



        System.out.println(ordArray);

            }catch (Exception e){
        System.out.print(e);
    }
    }
}

这应该在从文件中逐个读取单词时进行一些繁重的计数。然而,当我最终尝试将数组打印到终端时,只需检查它是否正常,然后再开始使程序能够将其写入文本文件,它只会给出一个错误,内容如下: [Ljava.lang.String;@163de20 但我不知道在这种情况下如何以及在哪里检查错误?有什么帮助吗?

最佳答案

这不是错误...这是 Object 类的默认 toString() 实现返回的内容...

[Ljava.lang.String;@163de20

意思是:

  • 引用数组 ([L)
  • 字符串类型(java.lang.String)
  • 唯一的对象 ID

Object.toString()代码

public String toString() {
  return getClass().getName() + "@" + Integer.toHexString(hashCode());
}

你应该做的是使用正确的方式打印:

  • 循环

    StringBuilder sb = new StringBuilder();
    for(String s: myArray) {
        sb.append(s);
        if(sb.length()>0) {
           sb.append(',');
        }
    }
    System.println(s.toString());
    
  • Arrays.toString

关于java - 打印数组时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19326624/

相关文章:

java - 在 IBM Domino 9 中将 Axis1 升级到 Axis2

javascript - 如何分配组织为一系列 Twig 的数组项?

python - 使用 numpy loadtxt 函数从文本文件中读取值

php - 在 PHP 中更新多维数组

java - 为什么长按 PullToRefreshListView 不起作用?

java - 为什么会发生 ClassCastException 然后将 lambda 分配给静态字段?

java - 非泛型类中的泛型实例变量

windows - 传递给 mshtml.dll 的参数是什么?

c# - 在 C# 中打印列表的值

java - Java读取USB打印机状态