在Swing中以10为单位打印数字1-100

时间:2018-10-12 18:52:11

标签: java swing

由于某种原因,我无法使代码按我想要的方式工作。我的任务是在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");
}

1 个答案:

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