Метод toString () печатает hashCode вместо строкового представления - PullRequest
1 голос
/ 15 января 2020

В моем классе есть метод toString (), в котором я пытаюсь вернуть строковое представление перечня букв в отсортированном алфавитном порядке (в квадратных скобках).

public class LetterInventory {
   private int[] count; //list of letters a to z
   private int size;
   public static final int MAX = 26;

   public LetterInventory(String data) {
      count = new int[MAX];
      data = data.toLowerCase();
      size = 0;

      for (int i = 0; i < data.length(); i++) {
         if (Character.isLetter(data.charAt(i))) {
            count[data.charAt(i) - 'a']++;
            size++;
         }
      }
   }

   public int size() {
      return size;
   }

   public boolean isEmpty() {
      return size == 0;
   }

   public int get(char letter) {
      if(!Character.isLetter(letter)) {
         throw new IllegalArgumentException("nonalphabetic character: " + letter);
      }
      return count[Character.toLowerCase(letter) - 'a'];
   }

   public String toString() {
      String represent = "[";

      for (int i = 0; i < MAX; i++) {
         for (int j = 0; j < count[i]; j++) {
            represent += (char) ('a' + i);
         }
      }
      represent += "]";
      return represent;
   }
}  

В моем методе toString () данная строка, такая как «ab c», возвращает «LetterInventory@1a407d53» вместо того, когда предполагаемый вывод должен быть «[abc]»

1 Ответ

1 голос
/ 15 января 2020

Я скопировал ваш код и запустил его, и он отлично работает

Потому что вы переопределяете свой метод toString() правильно.

System.out.println(new LetterInventory("abc")) // [abc]
...