使用for-loop和.setText()方法进行数组打印?

时间:2011-11-26 04:06:56

标签: android

我正在使用它来尝试显示数组中的所有字符,但它打印的所有字符都是“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);
    }

谢谢!

3 个答案:

答案 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);