2016-03-08 3 views
0

Код ниже читает из файла. Файл содержит около 3000 строк с 193 цифрами, разделенными пробелом в каждой строке.Получение адресов классов при чтении файла java

аннулируются чтения() {

String fileName = "ocr_train.txt"; 
    String line = null; 
    float[] vertices = new float[200]; 

    try { 
     // FileReader reads text files in the default encoding. 
     FileReader fileReader = new FileReader(fileName); 

     // Always wrap FileReader in BufferedReader. 
     BufferedReader bufferedReader = new BufferedReader(fileReader); 

     while((line = bufferedReader.readLine()) != null) { 
      //System.out.println(line); 

      String[] parts = line.split(" "); 
      for (int i = 0; i < parts.length; i++){ 
       if(parts[i] != null && parts[i].length() > 0){ 
        vertices[i] = Float.parseFloat(parts[i]); 
       } 
      } 
      Points p = new Points(vertices); 
      System.out.println(p); 
      full.add(p); 
     } 
     bufferedReader.close();   
    } 

Вот, когда я пытаюсь печати р, это дает мне значения, как Очки @ 10bf683, Очки @ d322f5 и т.д. Что не так с этим шагом?

+0

Возможный дубликат [Как я напечатать мой объект Java, не получив «SomeType @ 2f92e0f4»?] (http://stackoverflow.com/questions/29140402/how-do-i-print-my-java-object-without-getting-sometype2f92e0f4) – Jason

+0

Проверьте свои баллы класса, чтобы иметь метод toString() или нет. Если нет, пожалуйста, переопределите его и распечатайте в нем то, что вы хотите. Надеюсь, эта помощь. –

ответ

1

Предполагая, что точка является пользователем определенного класса и содержит ссылку на вершины массива, необходимо переопределить toString() метод в Поинт class (для того, чтобы System.out.println() метод, чтобы показать некоторые значимые ценности, как один по умолчанию показывает HashCode из object). Реализация toString() будет выглядеть следующим образом:

public class Point { 

    int[] vertices; 
    //other code 
    @Override 
    public String toString(){ 
     if(null != vertices){ 
      return Arrays.toString(vertices); 
     }else{ 
      return null; 
     } 
    } 

} 
0

Я думаю, что вам нужно переопределить Point.toString().

При использовании System.out.println(p); вы на самом деле с помощью System.out.println(p.toString());

для восьми основном типов данных, за исключением другого объекта с использованием System.out.println() напечатает их адрес, если вы не отменяют toString()

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