好吧,所以我必须为学校开一个名为“愤怒的坦克”的游戏,它基本上是一个简单版的愤怒的小鸟。 我们必须在文本文件中读取以用作我们游戏的景观,此文本文件包含空格和主题标签,hastags代表土地。 该文件已读取bean并插入到arraylist中,有一个公共方法calles getLandscapeFromFile()。
我正在尝试将景观打印到名为textArea的JTextArea中,使用一个用图像替换所有主题标签的循环。我应该使用textArea还是应该使用另一个面板?
这是我尝试但不起作用的代码:
for (int i = 0; i < Landscape.getLandscapeFromFile().size(); i++) {
for (char[] c : Landscape.getLandscapeFromFile()) {
textArea.append(String.valueOf(c[i]));
}
}
我一直在尝试各种各样的东西,但似乎什么都没有用...... 顺便说一下,我不是很擅长Java,这只是我学习IT的第一年。
答案 0 :(得分:1)
问题在于你的第二个循环
您选择i
字词
for (char[] c : Landscape.getLandscapeFromFile()) {
textArea.append(String.valueOf(c[i]));
}
您可能想要编写该数组的每个字符。
for (char[] c : Landscape.getLandscapeFromFile()) {
textArea.append(String.valueOf(c));
}
当您的任务是将内容表单文件写入textArea时,您应该这样做。
提示:您应该避免两次访问加载方法,因为它可以耗费用户本地变量。
List<char[]> landscapes = Landscape.getLandscapeFromFile(); //Read once
for(char[] landscape : landscapes) {//Iterate through all landscapes
stextArea.append(new String(landscape)); //Create new String for char array
}
答案 1 :(得分:0)
您可以使用StringBuilder
:
StringBuilder sb = new StringBuilder();
for (int i = 0; i < Landscape.getLandscapeFromFile().size(); i++) {
for (char[] c : Landscape.getLandscapeFromFile()) {
sb.append(String.valueOf(c));
}
}
textArea.setText(sb.toString());