当我从事我的一个小项目时,我在想编译代码时遇到Java编译器给我的怪异错误。帮忙的人说我有一个未处理的Interruptedexception。这是因为我使用Thread.sleep()。在我的代码中,您可以清楚地看到我处理了异常,但是编译器仍然坚持不这样做。除了使用这种方式,我还尝试使用try / catch块来执行此操作,但这也无济于事。奇怪的是,如果我执行buttonpress(),编译器也不会给我错误;而不是generate.setOnAction(e-> buttonpress()); (生成只是一个按钮)。 java抱怨的行是我的第一个代码块中的最后一行。这是我的代码:
@FXML
@Override
public void start(Stage primaryStage) throws InterruptedException, IOException {
window = primaryStage;
window.setTitle("RNG");
Parent root = FXMLLoader.load(getClass().getResource("FXML.fxml"));
lowerbound = (TextField) root.lookup("#lowerboundinput");
upperbound = (TextField) root.lookup("#upperboundinput");
output = (Text) root.lookup("#randomnumberoutput");
Button generate = (Button) root.lookup("#generatebutton");
generate.setOnAction(e -> buttonpress());
这是buttonpress方法:
public static void buttonpress()throws InterruptedException{
if(!lowerbound.getText().equals("")|| !upperbound.getText().equals("")) {
RandomNumberGenerator.JavaFXLauncher(lowerbound.getText(), upperbound.getText());
}else{
setOutput("EMPTY");
}
}
这是JavaFXLauncher方法:
public static void JavaFXLauncher(String firstbound, String secondbound) throws InterruptedException{
int random;
try {
if(inputvalidator(firstbound, secondbound)) {
random = Integer.parseInt(firstbound) + (int) (Math.random() * ((Integer.parseInt(secondbound) - Integer.parseInt(firstbound)) + 1));
Main.setOutput(Integer.toString(random));
TimeUnit.MILLISECONDS.sleep(50);
//some other code
} catch(NumberFormatException e){
Main.setLowerbound("Pick smaller number");
Main.setUpperbound("Integer overflow");
} catch (InterruptedException f){
}
}