2017-01-20 2 views
1

Я работаю над программой, где мне нужно прочитать файл и сохранить имя приза и его цену. Я пытаюсь распечатать массив, в котором хранится информация, но вместо этого выдает шестнадцатеричный код. Как я могу исправить это, чтобы массив имел правильное имя и цену, хранящиеся на нем? Вот мой код:Строковое представление объекта ... verbose vs hexadecimal

public class PrizeGame { 

    public static void main(String[] args) { 

     Prize[] prizes = new Prize[50]; 

     Random random = new Random(); 

     try { 
      Scanner fileScanner = new Scanner(new File("prizeList.txt")); 

      int count = 0; 
      while (fileScanner.hasNextLine()) { 
       String fileLine = fileScanner.nextLine(); 
       String[] splitLine = fileLine.split("\t"); 
       if (splitLine.length == 2) { 
        prizes[count] = new Prize(splitLine[0], Integer.parseInt(splitLine[1])); 

        count++; 
       } 
      } 

      for (int i = 0; i < prizes.length; i++) { 
       System.out.println(prizes[i]); 
      } 
     } catch (IOException e) { 
      System.out.println("Error reading file"); 
     } 
    } 
} 

Вот мой код приза():

public class Prize { 

    String name; 
    int price; 


    public Prize(String name, int price){ 
    this.name = name; 
    this.price = price; 
    } 


    public String getName() 
    { 
    return name; 
    } 

    public int getPrice() 
    { 
    return price; 
    } 

    public void setName(String name) 
    { 
    this.name = name; 
    } 

    public void setPrice(int price) 
    { 
    this.price = price; 
    } 




} 
+0

Пожалуйста, покажите нам свою реализацию «Приза». –

ответ

0

Добавить метод toString Приз:

@Override 
public String toString() { 
    return this.name + " " + this.price; 
} 

или вместо:

System.out.println(prizes[i]); 

написать письмо

System.out.println(prizes[i].getName() + " " + prizes[i].getPrice()); 
+0

Спасибо. Теперь я могу сохранить все и распечатать переменную. Однако как я могу распечатать только текст одного экземпляра или только цену? Когда я пытаюсь сделать это за пределами цикла while, он говорит, что SplitLine не может быть разрешен переменной. Еще раз спасибо. – Hundo

+0

Nevermind. ваши правки помогли мне понять это. Спасибо. – Hundo

+0

Это потому, что 'splitLine' объявляется внутри цикла while. Если вы объявите его непосредственно перед этим циклом, он будет виден после этого цикла. –

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