为什么这个java代码没有';不行?

为什么这个java代码没有';不行?,java,Java,我正在努力学习java。我试着制作一个程序,显示一个txt文件中的所有文本,当它读取一个特定的数字时就会停止,但它不起作用,我不知道出了什么问题 这就是我现在拥有的: package textLezer; import java.io.IOException; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; public class FileData implements Ru

我正在努力学习java。我试着制作一个程序,显示一个txt文件中的所有文本,当它读取一个特定的数字时就会停止,但它不起作用,我不知道出了什么问题

这就是我现在拥有的:

package textLezer;

import java.io.IOException;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class FileData implements Runnable {

public static final int WIDTH = 320;
public static final int HEIGHT = WIDTH / 12 * 9;
public static final int SCALE = 3;
public final String NAME = "Text lezer";

public JFrame frame;
public static JLabel label = new JLabel();
public static JPanel panel = new JPanel();

private Thread thread;

public boolean running = false;

public void start() {
    running = true;

    thread = new Thread(this, NAME + "_main");
    thread.start();
}

public void stop() {
    try {
        thread.join();
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
}

public void run() {
    String file_name = "text/test.txt";
    try {
        ReadFile file = new ReadFile(file_name);
        String[] aryLines = file.OpenFile();

        for (int i = 0; i < aryLines.length; i++) {
            if (aryLines[i].equals("5")) {
                return;
            } else {
                label.setText("<html>" + label.getText() + " <br> "
                        + aryLines[i] + "</html>");
                System.out.println(aryLines[i]);
            }
        }
    } catch (IOException e) {
        System.out.println(e.getMessage());
    }
}
}
以及txt文件:

1
2
3
4
5
6
7
8

代码的问题是您正在使用
return语句。这里你真正需要的是一个
中断语句

此外,为多行标签创建html的方式也是错误的。它不起作用,因为最终生成的html是

<html><html><html><html> <br> 1</html> <br> 2</html> <br> 3</html> <br> 4</html>

1
2
3
4
因此,您应该改进连接逻辑

public void run() {
    String file_name = "text/test.txt";
    try {
        ReadFile file = new ReadFile(file_name);
        String[] aryLines = file.OpenFile();

        StringBuilder innerText = new StringBuilder();
        for (int i = 0; i < aryLines.length; i++) {
            if (aryLines[i].equals("5")) {
                break;
            } else {
                innerText.append(aryLines[i]).append("<br/>");
            }
        }
        label.setText("<html>" + innerText.toString() + "</html>");
    } catch (IOException e) {
        System.out.println(e.getMessage());
    }
}
public void run(){
字符串文件_name=“text/test.txt”;
试一试{
ReadFile file=新的ReadFile(文件名);
字符串[]aryLines=file.OpenFile();
StringBuilder innerText=新建StringBuilder();
对于(int i=0;i);
}
}
label.setText(“+innerText.toString()+”);
}捕获(IOE异常){
System.out.println(e.getMessage());
}
}

你还没有说什么坏话:)“它不起作用”没有提供足够的信息。怎么搞的?你能把你的代码简化成一个简短的例子吗?例如,您真的需要一个UI来演示问题吗?请参见1)该计划的作用是什么,您期望的是什么?2) 微小细节:使用
WIDTH*9/12
代替
WIDTH/12*9
。您使用的是整数,整数除法总是向零舍入。为了减少舍入误差,先做乘法,再做除法。@Rhymoid双刃剑。先乘有更大的溢出几率:)@Cruncher:true!但是,对于这么小的数字,这是不会发生的;)
public void run() {
    String file_name = "text/test.txt";
    try {
        ReadFile file = new ReadFile(file_name);
        String[] aryLines = file.OpenFile();

        StringBuilder innerText = new StringBuilder();
        for (int i = 0; i < aryLines.length; i++) {
            if (aryLines[i].equals("5")) {
                break;
            } else {
                innerText.append(aryLines[i]).append("<br/>");
            }
        }
        label.setText("<html>" + innerText.toString() + "</html>");
    } catch (IOException e) {
        System.out.println(e.getMessage());
    }
}