Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:存储和序列化数组中的项_Java_Serialization_For Loop - Fatal编程技术网

Java:存储和序列化数组中的项

Java:存储和序列化数组中的项,java,serialization,for-loop,Java,Serialization,For Loop,我知道这可能是一个非常简单的问题,但我无法让我的代码正常工作。我需要在一个字段中写入一个XML文件,例如:1-a,2-C,3-D,…25-a 为此,我有项目总数(1..25)以及我从另一个类检索到的这些项目的答案。 下面是我用来编写这种XML的内容,以及我不应该使用的内容 for (int i=0;i<=30;i++){ nRespuesta = i+1; nRespuestaString = Integer.toStrin

我知道这可能是一个非常简单的问题,但我无法让我的代码正常工作。我需要在一个字段中写入一个XML文件,例如:1-a,2-C,3-D,…25-a 为此,我有项目总数(1..25)以及我从另一个类检索到的这些项目的答案。 下面是我用来编写这种XML的内容,以及我不应该使用的内容

for (int i=0;i<=30;i++){
                nRespuesta  = i+1;
                nRespuestaString = Integer.toString(nRespuesta);
                Respuesta = Verbal.getRespuestas(i);
                RespuestaString = nRespuestaString+"-"+Respuesta+",";

            }
serializer.startTag(null, "RESPUESTAS");
            serializer.text("RespuestaString");
            serializer.endTag(null, "RESPUESTAS");
for(int i=0;i更新
Answer现在使用StringBuilder以获得更好的性能

在每次循环迭代中,您需要修改字符串,而不是覆盖,因此请将代码修改为以下内容:

StringBuilder sb = new StringBuilder();
for (int i=0;i<=30;i++){
                nRespuesta  = i+1;
                nRespuestaString = Integer.toString(nRespuesta);
                Respuesta = Verbal.getRespuestas(i);
                //Note the change on the line below
                sb.append(nRespuestaString).append("-").append(Respuesta).append(",");
            }
serializer.startTag(null, "RESPUESTAS");
            serializer.text(sb.toString());
            serializer.endTag(null, "RESPUESTAS");
StringBuilder sb=新建StringBuilder();

对于(int i=0;i首先,您将用值覆盖字符串,而不是附加:

RespuestaString=nRespuestaString+“-”+Respuesta+“,”;

为了使代码更简洁明了,请使用StringBuilder类创建字符串

此外,这一行:

serializer.text(“RespuestaString”);

只需将值“RespuestaString”放入XML中即可。我相信您希望编写:


serializer.text(RespuestaString);

教一些最佳实践如何,比如“不要在循环中串联--使用StringBuilder”?@MarkoTopolnik好的观点-我会检查语法并更新答案。作为参考,编译器不会执行此优化吗?它不可能执行我心目中的优化,即在循环中构建字符串。
javac
将只编译一个包含两个以上操作数的串联表达式nto a
StringBuilder
idiom.OK,感谢您指出@MarkoTopolnik和@sm4。我已经更新了答案,使用
StringBuilder
来教授正确的习惯用法,不要在
append
中使用串联。使用
append(x)。append(y)…
。按照现在的方式,在每次迭代中强制实例化隐式的
StringBuilder