Getting error on printing array

后端 未结 4 561
孤独总比滥情好
孤独总比滥情好 2021-01-28 12:22

I got this code:

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

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


        
相关标签:
4条回答
  • 2021-01-28 13:01

    This is not an error... This is what the default toString() implementation of the Object class returns...

    [Ljava.lang.String;@163de20
    

    Means:

    • array of references ( [L )
    • of type String ( java.lang.String )
    • unique object ID

    Code of Object.toString()

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

    What you shouldd do is to use a proper way to print:

    • a loop

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

    0 讨论(0)
  • 2021-01-28 13:14

    Actually this is commonly considered to be a "mistake" of arrays in Java: arrays don't override toString(), sadly. What you see is Object's toString():

    Returns a string representation of the object. In general, the toString method returns a string that "textually represents" this object. The result should be a concise but informative representation that is easy for a person to read. It is recommended that all subclasses override this method.

    The toString method for class Object returns a string consisting of the name of the class of which the object is an instance, the at-sign character `@', and the unsigned hexadecimal representation of the hash code of the object. In other words, this method returns a string equal to the value of:

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

    A common workaround is to use Arrays.toString():

    System.out.println(Arrays.toString(oldArray));
    
    0 讨论(0)
  • 2021-01-28 13:17

    Use Arrays.toString() to log your Array's contents

    System.out.println(Arrays.toString(ordArray));
    

    If you want a formatted output you need to iterate over it using a good old for loop.

    for (int i = 0; i < ordArray.length; i++) {
       System.out.printf("ordArray[%d] = %s", i, ordArray[i]);
    }
    
    0 讨论(0)
  • 2021-01-28 13:23

    You have to print the array element by element.

    ie.

        for(int i = 0; i < ordArray.length; i++)
            System.out.println(ordArray[i]);
    
    0 讨论(0)
提交回复
热议问题