实际上我想在textfield1中显示arraylist的第一个元素,在textfield 2中显示它的下一个元素我希望它在按下按钮时继续旋转。问题是它一直显示两个文本域中的最后一个元素
public class Teams
{
String[] P={"Hi","there","you"};
}
Teams tm=new Teams();
for(int j=0;j<=tm.P.length; j++){
textfield1.setText(tm.P[j]);
textfield2.setText(tm.P[j+1]);
}
答案 0 :(得分:0)
您可以执行额外检查(If-Else)。 如果textfield1的文本等于数组[1]那么 做交换。 如果它会在那里。它将交换它。如果没有,那么如果检查将被忽略。
到目前为止,这就是我理解你的问题的答案。
答案 1 :(得分:0)
从我的代码中得到的结果:
public class Teams{
String[] P={"Hi","there","you"};
}
另一个班级
//Inside some function in another class
Teams tm=new Teams();
for(int j=0;j<=tm.P.length; j++){
textfield1.setText(tm.P[j]);
textfield2.setText(tm.P[j+1]);
}
类P
中的变量Teams
的长度为3.因此,在下面的代码段中,j
的值从0更改为3.在{{{{ 1}}是2行
j
应将textfield2.setText(tm.P[j+1]);
作为索引ArrayIndexOutOfBoundsException
,即j+1
不存在3。
同样,当P
的值为3时,这两行
P
应抛出 textfield1.setText(tm.P[j]);
textfield2.setText(tm.P[j+1]);
,因为ArrayIndexOutOfBoundsException
的索引对于第一行是3而对于第二行是4。
既然你已经在评论中明确指出没有抛出异常,我觉得这段代码必须位于P
块中,该块捕获try - catch
个对象。这也应该解释为什么这种行为会在两个文本字段中显示Exception
的最后一个值。
当P
为1时,j
此字段的文本将设置为最后一个元素textfield2.setText(tm.P[j+1])
。现在,在"you"
达到值2的下一个循环中,第一个文本字段j
被设置为最后一个元素textfield2
。但是在下一行中会抛出异常,因此不执行该行,因此"you"
的文本仍为textfield2
。
最后当you
为3时,第一行本身会抛出异常,以便第一行之后的代码不会被执行,而j
和textfield1
都有文本值{{1}存储在它们中,这就是显示的内容,并导致您突出显示的问题。
答案 2 :(得分:0)
运行此代码时,应该获得ArrayIndexOutOfBoundsException异常。您的代码将以例外终止。
根据你的例子,tm.P.length是3。
当j = 2时,
textfield1= there
textfield2= you
当j = 3时,
textfield1= you
和
textfield2.setText(tm.P[j+1]);
正在获取异常(ArrayIndexOutOfBoundsException)并从tm.P [4]开始终止流程(数组中没有这样的位置)但textfield2之前的值是&#34;你&#34;
所以你的最终结果是
textfield1= you
textfield2= you