获取String [] [Ljava.lang.String; @时出错

时间:2016-05-19 11:10:08

标签: java

在检查它是否重复之前,我刚检查了以下问题:How do I convert [[Ljava.lang.String;@7defb4fb] to a StringWhy does println(array) have strange output? ("[Ljava.lang.String;@3e25a5")

好吧,当我在调试模式下调用我的动作方法时,我有这样的事情:

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

问题出现在我尝试迭代这个问题时,ts值类似于[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()应该打印一个String数组,如下所示:[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);
}

2 个答案:

答案 0 :(得分:1)

这会将数组中的内容打印为字符串。

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

如果打印地址(如Ljava.lang.Long@xxx)那么这就是该字符串中的实际内容。因此,您可能需要检查插入到数组中的内容。

编辑: 看到你正在输入数字但是获取地址。尝试输入它们,如array [index] ="" + longValue; 或者Long.toString(longValue)

答案 1 :(得分: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");
}

我把自己的注意力集中在elimnarTareas上,当我调试了erasearTareas时,我忘记了我的其他课程,现在我得到了数组格式的数字,如下所示:[66348, 65587, 65474, 65382]