2016-05-19 2 views
-3

Перед проверкой, если это дубликат, я только что проверил эти вопросы: How do I convert [[Ljava.lang.String;@7defb4fb] to a String и Why does println(array) have strange output? ("[Ljava.lang.String;@3e25a5")Ошибка при получении String [] [Ljava.lang.String; @

Ну, когда мой метод действия это называется режим отладки, у меня есть что-то вроде этого:

RenderBandejasForm bandejaForm = (RenderBandejasForm) form; String [] ts = bandejaForm.getTareasSeleccionadas();

проблема возникает, когда я пытаюсь перебирать это Т.С. значение что-то вроде [Ljava.lang.String;@64c064c, так, как я предположим, что в цикле этого?

Я пытался что-то выходы, как:

System.out.println(Arrays.toString(ts));

получать тот же странный вывод: [Ljava.lang.Long;@64c064c

Я попытался петлю через него тоже:

for (String temp : ts){ 
     String test1 = temp; 
    } 

строка test1 показывает что-то другое [Ljava.lang.Long;@differentNumbers

Я думаю, что я делаю вызовы на объект памяти и не называю массив правильным?

отредактирован:

Метод getTareasSeleccionadas() должен напечатать массив строк, что-то вроде этого: [66344,66345,66553], но я всегда получаю, что выход [Ljava.lang.Long;@64c064c

отредактирован 2: Вот весь код функции, которые у меня есть:

/** 
* Elimina una o más tareas. 
*/ 
public ActionForward eliminarTareas(ActionMapping mapping, ActionForm form, 
    HttpServletRequest request, HttpServletResponse response) { 

    RenderBandejasForm bandejaForm = (RenderBandejasForm) form; 
    String [] ts = bandejaForm.getTareasSeleccionadas(); 

    //here I start my tests 

    for (String temp : ts){ 
     String test1 = temp; 
    } 

    String test2 = Arrays.deepToString(ts); 
    String test3 = Arrays.toString(ts); 

    //Here I finish'em 

    return this.bandeja(mapping, bandejaForm, request, response); 
} 
+0

Почему вопросы, которые вы проверили, не отвечают на ваш вопрос? В чем именно проблема? – Tunaki

+2

Как мы должны знать, что возвращает 'getTareasSeleccionadas'? Пожалуйста, отредактируйте свой вопрос и добавьте [mcve]. – RealSkeptic

+0

Вы случайно назвали класс 'String' в своем проекте? – SomeJavaGuy

ответ

0

Пользователь Pshemo спрашивают меня, чтобы проверить мой код еще раз, причина может быть, я забыл использовать Arrays.toString() на правильном месте, ну, вот это:

public ActionForward confirmEliminarTareas(ActionMapping mapping, ActionForm form, 
    HttpServletRequest request, HttpServletResponse response) { 

    RenderBandejasForm bandejaForm = (RenderBandejasForm) form; 

    request.setAttribute(Constants.TAREAS, 
     Arrays.toString(bandejaForm.getTareasSeleccionadas()));   
    request.setAttribute(Constants.TIPO_BANDEJA, 
      bandejaForm.getTipoBandeja()); 
    request.setAttribute(Constants.TIPO_TAREA, bandejaForm.getTipoTarea()); 

    return mapping.findForward("confirmEliminarTareas"); 
} 

Я сосредотачиваюсь я забыл свой другой класс, когда я отлаживаю excinarTareas, теперь я получаю цифры в формате массива, примерно так: [66348, 65587, 65474, 65382]

1

Это будет печатать то, что в ар луч как струны.

for(String s : ts) { 
    System.out.println(s); 
} 

Если печатает адреса (например, [email protected]), то это то, что на самом деле в этой строке. Поэтому вы можете проверить, что вставляется в ваш массив.

Редактировать: Увидеть, что вы вводите цифры в него, но получаете адреса. Попробуйте ввести их как array [index] = "" + longValue; Или Long.toString (longValue)

+0

Я просто зацикливаю это, прежде чем задавать свой вопрос ... В моем вопросе есть пример. и да, я снова получаю [email protected], и я не знаю, что делать дальше, что я могу сделать? – jvillegas

+0

Затем ваша функция bandejaForm.getTareasSeleccionadas() возвращает массив именно этого содержимого. Вероятность ошибки наиболее вероятна в функции bandejaForm.getTareasSeleccionadas(). –

+0

Вероятно, ошибка преобразования от Long до String в bandejaForm.getTareasSeleccionadas(). –

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