2014-09-07 2 views
0

Редактировать # 2: Решено. Мне просто нужно позвонить непосредственно из массива и не называть всю карту. Это довольно круто, но неудобно, потому что это означает, что есть код, который я не могу проверить по строкам.Обнаружено @Override, но все равно получить [I @ 232204a1 вывод печати

Still: Где я могу узнать больше о внутренней работе заявлений? Мне просто нужно просмотреть фактические файлы в моем каталоге java и html javadocs?

Я программировал в python около 3 месяцев и просто взял Java неделю назад для университетского класса. Я выходил за рамки служебного долга, но, наконец, дошел до того, что мои навыки Google не могут исправить.

import java.util.Scanner; 
import java.util.ArrayList; 

import java.util.GregorianCalendar; 
import java.util.Date; 

import java.util.HashMap; 
import java.util.Hashtable; 
import java.util.Map; 

class Complex { 
    private double re; 

    public Complex(double re) { 
     this.re = re; 
    } 

    @Override 
    public String toString() { 
     return String.format(re + "N"); 
    } 
} 

public class New { 
    public static void main(String[] args) { 
     ~~100 lines of functioning code~~ 
      Map<Complex, int[]> dict = new HashMap<>(); 
      for (int x = 0; x <= tokens.length - 1; x++) { 
       Complex str = new Complex(x); 
       int[] anArray = new int[3]; 

       for (int i = 0; i <= 2; i++) { 
       anArray[i] = Integer.parseInt(tokens[x].split("/")[i]);                  
       } 
       dict.put(str, anArray); 
       System.out.print("\n"+dict.get(str)+"\n\n"); 
      } 

Однако эти выходы "[I @ 75b84c92" и "[I @ 232204a1" для значений х 1 и 2 (аналогично для 3), соответственно. Я понимаю, что это объектные коды. Однако, если я жестко закодирую цикл, я не буду больше ошибок.

   if(tokens.length == 1) { 
        String[] date1 = tokens[0].split("/"); 
        int foo1 = Integer.parseInt(date1[0]); 
        int foo2 = Integer.parseInt(date1[1]); 
        int foo3 = Integer.parseInt(date1[2]); 
       } else if (tokens.length == 2) { 
        String[] date1 = tokens[0].split("/"); 
        int foo1 = Integer.parseInt(date1[0]); 
        int foo2 = Integer.parseInt(date1[1]); 
        int foo3 = Integer.parseInt(date1[2]); 
        String[] date2 = tokens[1].split("/"); 
        int doo1 = Integer.parseInt(date2[0]); 
        int doo2 = Integer.parseInt(date2[1]); 
        int doo3 = Integer.parseInt(date2[2]); 
       } else if (tokens.length == 3) { 
        ~~etc. etc. etc. etc.~~ 

Редактирование в связи с недавним ответом: Похоже, что моя ошибка не исходит от моего сложного объекта, но при вызове INT [] с помощью другой скрытой .ToString во время моего оператора печати.

+0

уважаемый пользователь, либо я слишком устал, либо ваш вопрос не ясен или запутан для меня? :) –

+0

Что вы подразумеваете под «все работает отлично позже», у вас есть проблема с toString of Complex? – Adi

+0

dict.get (str) -> даст вам массив int [], когда toString() вызывается в массиве, он просто распечатает свой хэш-код, и это то, что вы получаете. Если вам нужны значения в нем, повторите попытку int [], которую вы получите при создании dict.get (str). – BatScream

ответ

0

В System.out.print("\n"+dict.get(str)+"\n\n"); вы фактически вызываете toString int [], а не своего сложного объекта. Это ожидаемый результат для массива toString.

+0

приветствуются – Adi

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