Пауза в Java + метод окончания - PullRequest
0 голосов
/ 16 января 2020

Я хотел сказать для школьного проекта в Greenfoot, что если ровер сталкивается с системной ошибкой, он должен вывести это, затем немного подождать, а затем завершить текущий метод. Однако пауза помечена следующим кодом ошибки: незарегистрированное исключение java. яз. InterupptedException; должен быть пойман или объявлен брошенным, так как я очень плохо знаком с Java Я понятия не имею, что изменить. Кроме того, он должен затем завершить метод, но с текущей командой весь сценарий заканчивается.

"

public Rover (String pname, char pfrequenz, int penergie)
{
    energie = penergie;
    name = pname;
    temp = 15 ;
    distance = 0;
    systemcheck = true;
    frequenz = pfrequenz ;
}

public void check()
{
    if (markeVorhanden())
    {
        energie = energie + 100;
    }
    if (energie == 0){
        systemcheck = false;

    }
    if (systemcheck = false){
        nachricht("System Failure");
        java.util.concurrent.TimeUnit.SECONDS.sleep(2);
         System.exit(0);
    }
    if (distance > 100){
        nachricht("Congrats you have passed 100");
    }
    anzeige.anzeigen("Akku:  "+energie+ "  %");
}

Ответы [ 2 ]

0 голосов
/ 17 января 2020

Попробуйте это

import java.io.*;

public class Yourclass{



public void Rover (String pname, char pfrequenz, int penergie)
{
    Integer energie = penergie;
    String name = pname;
    Integer temp = 15 ;
    Integer distance = 0;
    boolean systemcheck = true;
    char frequenz = pfrequenz ;
}

public  void check() throws IOException
{

    if (markeVorhanden())
    {
        energie = energie + 100;
    }
    if (energie == 0){
        systemcheck = false;

    }


    if (systemcheck = false){
        nachricht("System Failure");
        throw new IOException("sorry device error");  
    }
    if (distance > 100){
        nachricht("Congrats you have passed 100");
    }
    anzeige.anzeigen("Akku:  "+energie+ "  %");


}


 public static void main(String []args) throws InterruptedException
 {
     Yourclass demo= new Yourclass();
    System.out.println("Hello World");
    try{
        demo.check();
    }
    catch(Exception e)
    {
       Thread.sleep(2000);
       System.out.println("function stopped"); 
    }
 }
}
0 голосов
/ 17 января 2020

Вам нужно будет прочитать об обработке исключений в Java. Метод sleep может быть прерван и, следовательно, может вызвать InterruptedException. Вы можете переслать это исключение или проигнорировать его. Чтобы переслать исключение, объявите функцию a

public void check() throws InterruptedException

, но затем вызывающие эту функцию должны будут иметь дело с этим потенциальным исключением. Так как прерывание не выглядит серьезной проблемой здесь (режим сна немного короче, чем две секунды), может быть неплохо игнорировать исключение:

try { java.util.concurrent.TimeUnit.SECONDS.sleep(2); }
catch (InterruptedException ignored) {}

, чтобы просто вернуться из текущего метода используйте return вместо System.exit()

...