2013-08-29 2 views
0

У меня проблема с моей программой java. Я создал массив целых чисел, используя класс SelectionSortArray. Проблема, с которой я сталкиваюсь, заключается в том, что когда я пытаюсь распечатать содержимое моего созданного массива, он отображает некоторые другие случайные строки кодов, что, очевидно, является ошибкой. Ниже приведена моя работа. Если вы, ребята, можете скопировать и вставить его, запустить его и сказать, что не так, я буду признателен. Опять же, он не печатает содержимое из моего массива при запуске моего демонстрационного/основного.Печать содержимого массива?

Конечный результат должен распечатать это:

10 
20 
30 

Моя демо/главная:

public static void main(String[] args) { 

    SelectionSortArray[] ints = new SelectionSortArray[3]; 

    ints [0] = new SelectionSortArray(10); 
    ints [1] = new SelectionSortArray(20); 
    ints [2] = new SelectionSortArray(30); 

    for (int index = 0; index < ints.length; index++) { 
     System.out.println(ints[index]); 
    } 


    } 

Мой класс, который я использую для создания массива:

public class SelectionSortArray implements Comparable<SelectionSortArray> { 

public int num; 

public SelectionSortArray(int initialNum) { 
    num = initialNum; 
} 

public int compareTo(SelectionSortArray other) { 

    int result; 

    if (num == other.num) { 
     result = 0; 
    } else if (num < other.num) { 
     result = 1; 
    } else { 
     result = 2; 
    } 

    return result; 

} 
} 
+0

Вы также можете быть в хорошей форме, чтобы использовать метод 'compareTo' для использования' Integer.compareTo (anotherInteger) 'вместо того, чтобы вручную вводить все это. Просто сохраните свой 'num' как' Integer', а не 'int', а затем измените метод compareTo на одну строку:' return num.compareTo (other.num); ' – StormeHawke

+0

@chrylis no its not a дублировать. и я читаю, что вы связали, это мне не помогает. Я использую класс для создания своего массива в моей демонстрации/основной. – user2256002

+0

@StormeHawke Или просто используйте 'Integer' вместо того, чтобы писать новый класс оболочки с низкой функциональностью. – chrylis

ответ

3

Вам необходимо переопределить метод toString() в SelectionSortArray что-то вроде этого

class SelectionSortArray { 
    .... 


    public String toString() { 
     return String.valueOf(num); 
    } 

} 
  • Когда вы System.out.println ваш объект, JVM будет печатать toString() представление объекта

  • Если этот метод не переопределен, он будет отображать реализацию по умолчанию toString() из Object, который [email protected]_code.

1

Нет, вы не имеете массив целых чисел, то есть массив SelectionSortArray с без всякой видимой причины. Чтобы ваш существующий код работал, вам необходимо ввести toString() на SelectionSortArray. Чтобы сделать существующий код разумным, просто замените свой SelectionSortArray (который не является массивом) с int или Integer.

0

На самом деле это отпечатки SelectionSortArray объектов toString. который был бы именем класса с @ и hashcode вас SelectionSortArray объектом.

toString метод в Object класс для ref.

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

вы должны переопределить toString метод Object класса SelectionSortArray как @sanbhat предложил.

+0

Некоторые, надеюсь, конструктивная обратная связь: этот ответ, хотя и правдивый, на самом деле мало чем помогает, очевидно, новому программист выясняет, как исправить свою проблему ... – StormeHawke

+0

umm рядом с тем, что он/она должен понять первопричину, стать лучше;) –