Java 获取打印数组时出错

Java 获取打印数组时出错,java,arrays,printing,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() {

我得到了这个密码:

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);
    }
    }
}
import java.util.*;
导入java.io.*;
公共类义务3A{
公共静态void main(字符串[]args){
ordanalysis O=新的ordanalysis();
ordanalysis.analyseMet();
}
}
课堂秩序分析{
公共静态无效分析集(){
Scanner Inn=新扫描仪(System.in);
试一试{
File skriffil=新文件(“opplyning.txt”);
FileWriter fw=新的FileWriter(SKRIFFIL);
BufferedWriter bw=新的BufferedWriter(fw);
Scanner lesFil=新扫描仪(“Alice.txt”);
int i=0;
int totalOrd=0;
int-antUnikeOrd=0;
String[]ordArray=新字符串[5000];
int[]antallOrd=新int[5000];
while(lesFil.hasNext()){
字符串ord=lesFil.next().toLowerCase();
totalOrd++;
布尔ut=false;
int y=0;
int z=0;

对于(i=0;i这不是错误…这是对象类的默认toString()实现返回的结果

[Ljava.lang.String;@163de20
指:

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

您应该做的是使用适当的方式打印:

  • 环路

    StringBuilder sb = new StringBuilder();
    for(String s: myArray) {
        sb.append(s);
        if(sb.length()>0) {
           sb.append(',');
        }
    }
    System.println(s.toString());
    
使用
数组.toString()
记录数组的内容

System.out.println(Arrays.toString(ordArray));
如果想要格式化输出,需要使用一个好的
for
循环对其进行迭代

for (int i = 0; i < ordArray.length; i++) {
   System.out.printf("ordArray[%d] = %s", i, ordArray[i]);
}
for(int i=0;i
实际上,这通常被认为是Java中数组的一个“错误”:遗憾的是,数组没有覆盖
toString()

返回对象的字符串表示形式。通常情况下,toString方法返回“文本表示”此对象的字符串。结果应为简洁但信息丰富的表示形式,便于阅读。建议所有子类重写此方法

class对象的toString方法返回一个字符串,该字符串由对象作为实例的类的名称、at符号字符“@”和对象哈希代码的无符号十六进制表示形式组成。换句话说,此方法返回一个等于以下值的字符串:

getClass().getName() + '@' + Integer.toHexString(hashCode())

常见的解决方法是使用:


必须逐元素打印数组元素

for(int i=0;i
非常感谢!它真的很有帮助,我可以问一个附加问题吗?当它打印时,它打印在整个终端上,足够了,但是所有条目都是空的?!:O
getClass().getName() + '@' + Integer.toHexString(hashCode())
System.out.println(Arrays.toString(oldArray));
    for(int i = 0; i < ordArray.length; i++)
        System.out.println(ordArray[i]);