Java,剪贴板代码不工作,

Java,剪贴板代码不工作,,java,if-statement,clipboard,Java,If Statement,Clipboard,程序应分析剪贴板中是否存在以1开头的5位数字。问题是,当复制文本时,如果(clipboardContent.length()==5)程序停止工作,我不会回答 import java.awt.*; import java.awt.datatransfer.*; import java.io.IOException; public class drob implements FlavorListener { private static Clipboard clipboard = Tool

程序应分析剪贴板中是否存在以1开头的5位数字。问题是,当复制文本时,如果(clipboardContent.length()==5)程序停止工作,我不会回答

import java.awt.*;
import java.awt.datatransfer.*;
import java.io.IOException;

public class drob implements FlavorListener {
    private static Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();

    public static void main(String[] args) throws InterruptedException {
        clipboard.addFlavorListener(new drob());

 //  fall asleep for 100 seconds, otherwise the program will immediately end

        Thread.sleep(100 * 1000);
    }

    @Override
    public void flavorsChanged(FlavorEvent event) {
        try {
            String clipboardContent = (String) clipboard.getData(DataFlavor.stringFlavor);
            handleClipboardContent(clipboardContent);
        } catch (UnsupportedFlavorException | IOException e) {
            // TODO handle the error

            e.printStackTrace();
        }
    }

    private void handleClipboardContent(String clipboardContent) {
        // check if the string satisfies condition
           

 // for example, check that the length of the string is five

        if (clipboardContent.length() == 5) {
            System.out.println(clipboardContent);

        }
    }
}

您没有检查
clipboardContent
中的
null
。只要改变一下:

if (clipboardContent.length() == 5) {...}
致:


“程序停止工作。”如果您遇到错误或异常,您应该告诉我们并发布stacktrace。“它停止工作”本身对我们来说不是很有用。正因为如此,您试图在clipboardContent上运行.length(),而“you don't answer”,这意味着它为null…因此意味着您得到了NullPointerException?
if (clipboardContent != null && clipboardContent.length() == 5) {...}