由于某种原因,我无法使代码按我想要的方式工作。我的任务是在10行中打印1-100之间的数字(Swing-不是控制台!),但是如果我将数字仅一行而不是10(例如1-10、11-20、21-30等)删除最后一个“ textLabel.setText(/////);”中的字符串。
我不允许在标签中使用HTML代码,因为尚未在课堂上进行讨论。还有另一种方法吗?
我该怎么做才能修复代码/循环?
int i;
if (event.getSource() ==fåFramMönster){
String gridPattern = "";
for(i = 1; i <= 100; i++) {
gridPattern = gridPattern + " " + Integer.toString(i);
textLabel.setText(gridPattern);
if (i%10==0) {
textLabel.setText(gridPattern + "\n");
}
}
我已经在控制台中尝试过,并且工作正常(我得到了正确的结果):
for(int k = 1; k <= 100; k++) {
System.out.print(" " + k);
if(k % 10 == 0)
System.out.print("\n");
}
答案 0 :(得分:2)
您的代码不起作用,因为setText
替换了内容,因此,当添加下一个值时,setText(gridPattern + "\n")
添加的换行符将被丢弃。
您永远不会在\n
值本身中插入gridPattern
。
代码应为:
String gridPattern = "";
for (int i = 1; i <= 100; i++) {
gridPattern = gridPattern + " " + Integer.toString(i);
if (i % 10 == 0) {
gridPattern = gridPattern + "\n";
}
}
textLabel.setText(gridPattern);
更好的话,如果您了解StringBuilder
:
StringBuilder buf = new StringBuilder();
for (int i = 1; i <= 100; i++) {
buf.append(' ').append(i);
if (i % 10 == 0) {
buf.append('\n');
}
}
textLabel.setText(buf.toString());
如许多评论中所述,要设置文本格式,它必须为HTML,因此必须以<html>
开头,以</html>
结尾,并且行必须用"<br>"
分隔。
StringBuilder buf = new StringBuilder();
buf.append("<html>");
for (int i = 1; i <= 100; i++) {
buf.append(i).append(i % 10 == 0 ? "<br>" : " ");
}
buf.append("</html>");
textLabel.setText(buf.toString());