我正在使用它来尝试显示数组中的所有字符,但它打印的所有字符都是“g” 我在常规java中使用System.out.println()测试了相同的代码,它工作正常
String testarray[]={"a","s","d","f","g"};
for(int l=0; l<testarray.length; l++){
String temp="";
temp=temp+testarray[l];
display.setText(""+temp);
}
谢谢!
答案 0 :(得分:2)
执行此操作的最佳方法是使用for-each循环。
尝试:
TextView tv = (TextView) findViewById(R.id.TextView);
String testarray[] = {"a","s","d","f","g"};
String print = "";
for(String s : testarray) {
print += s;
}
tv.setText(print)
这将打印出asdfg
你的代码中的问题是你在for循环中初始化变量WITHI,这意味着每次它经过时,它都会重新创建String =“”,以便像我在我的例子中那样修复它初始化它。另外,请不要在循环之后设置textview。
如果你不熟悉for-each循环,那基本上就是:
for each ( object x in objectArray)
do this
编辑:
System.out.println()!=。setText()
.setText()设置视图的文本,每次重置文本时,您都会这样做,删除旧文本,然后添加新文本
答案 1 :(得分:2)
根据你的代码,我会避免别人说的话,我会用简单的外行语言向你解释:
简单来说, set 和 print 之间存在差异。
当你设置时,用一个新值替换那里的任何东西。当您打印时,将附加到那里的任何内容。 System.out.print
因此附加内容,而setText
则设置内容。
for
发生得如此之快(计算机可以比你眨眼更快地计算出很多东西)你连续看到一堆setText
的东西,最后只有“g”。正如其他人所说,这就是为什么你需要“追加”东西。
然而,比其他人说的简单,在整个for循环中只需要一行。
display.setText(display.getText() + testarray[l]);
这就是您所需要的一切。
答案 2 :(得分:0)
你做错了。你正在用for循环中的空字符串初始化临时字符串。 所以每次它都会分配空字符串,然后你从数组中查找字符串,这样临时字符串将只有你从数组中分配的字符串,然后你在textview上显示。
这样您就可以通过在Textview上创建字符串来设置所有字符
String testarray[]={"a","s","d","f","g"};
String temp="";
for(int l=0; l<testarray.length; l++){
temp=temp+testarray[l];
}
display.setText(temp);