2013-04-25 2 views
0

Я пытаюсь написать простую программу, используя следующий код, чтобы создать один размерный массив, который затем вы можете вызвать значение из числа индексов. Я использую и как мой компилятор. Всякий раз, когда я пытаюсь отлаживать или запускать программу, полный массив печатает как это: [[email protected].Почему мой массив не распечатывается правильно?

class Array  
{ 
public static void main(String[] args) 
{ 
    int[] MyArray = new int[] {15, 45, 34, 78, 65, 47, 90, 32, 54, 10}; 
    System.out.println("The full array is:"); 
    System.out.println(MyArray); 
    System.out.println("The 4th entry in the data is: " + MyArray[3]); 
} 
} 

Правильный ввод данных печатается, когда он вызывается. Я попытался найти ответы в Интернете относительно того, что я должен делать, но я не мог найти ничего, что действительно работает. Я только начинаю изучать Java, поэтому может быть очень простой ответ на этот вопрос, который я просто игнорирую. Если у кого-то есть какие-то идеи, я был бы очень благодарен.

+1

Массивы имеют реализацию по умолчанию 'Equals()', 'хэш-код()' и 'ToString()'. –

ответ

2

Используйте вместо этого:

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

API Reference: Arrays.toString(int[])

+0

Это сработало, спасибо! Я был прав, думая, что это очень простое решение. – user2320169

+0

@ user2320169 Это не исправление, это функция языка java. Узнайте, что делает метод 'Object'' toString() '. –

3

Использование:

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

Для print the array elements. В вашем случае вы использовали реализацию по умолчанию Object.toString(), которая не настолько информативна ...

0

для печати массива, в котором вы должны использовать цикл. например:

for (int i: MyArray){ 
System.out.print(i + " ")} 
5

Java - объектно-ориентированный язык. Когда вы вызываете System.out.print(MyArray); в Java, вы на самом деле печатаете адрес объекта в куче в памяти код toString из его родительского класса Object, код показан ниже, внесенный комментарием от EngFouad, извините за нарушение. Странная строка, которую вы видите, является ссылкой, которую компьютер использует для поиска ваших данных, когда вы запрашиваете что-то, связанное с переменной .

Как указано другими ответами, чтобы распечатать данные вашего объекта, вы можете использовать класс Array, встроенный в метод .toString(). Это будет печатать данные из объекта, а не только ссылку на объект.

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

Коррекция На самом деле это ToString() класса Object: GetClass() GetName() + "@" + Integer.toHexString (хэш-код()).. - Eng.Fouad

Ошибка была исправлена ​​благодаря комментариям, не зная сообщить неправильную информацию. Я сам это неправильно понял. Вот ссылка API, чтобы увидеть код:

http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html#toString()

+2

На самом деле это 'toString()' класса 'Object':' getClass(). GetName() + "@" + Integer.toHexString (hashCode()) '. –

+0

Это определенно не адрес в куче! –

+0

@ Eng.Fouad и MarkRotteveel благодарим за исправления, редактируя сейчас. Я оговорился, я думал, что это адрес моего образования. – Kyle

Смежные вопросы