I got this code:
import java.util.*;
import java.io.*;
public class Oblig3A{
public static void main(String[]args){
OrdAnalyse O = new OrdAnalyse();
This is not an error... This is what the default toString() implementation of the Object class returns...
[Ljava.lang.String;@163de20
Means:
[L
)java.lang.String
)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
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));
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]);
}
You have to print the array element by element.
ie.
for(int i = 0; i < ordArray.length; i++)
System.out.println(ordArray[i]);