【问题标题】:Pause in Java + end methodJava + end 方法中的暂停
【发布时间】:2020-01-16 20:41:24
【问题描述】:

我想对 Greenfoot 的一个学校项目说,如果流动站遇到系统错误,它应该输出这个,然后等待一小段时间,然后终止当前方法。但是,暂停标记有以下错误代码:未报告的异常 java。朗。中断异常;必须咳嗽或宣布被抛出,因为我对 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+ "  %");
}

【问题讨论】:

  • 请注意if (systemcheck = false){ 中有错字。您需要 两个 = 符号,否则条件永远不会为真。

标签: java greenfoot


【解决方案1】:

试试这个

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"); 
    }
 }
}

【讨论】:

  • 所以还有一个Error: public static void main(String []args) throws InterruptedException { System.out.println("Hello World");尝试{检查(); } 捕捉(异常 e){ Thread.sleep(2000); System.out.println("函数停止"); } } 支票();被标记并给出错误:非静态方法 check() 不能从静态上下文中引用
【解决方案2】:

您必须阅读 Java 中的异常处理。 sleep 方法可能会被中断,因此可能会引发InterruptedException。您可以转发此异常或忽略它。 要转发异常,请声明函数 a

public void check() throws InterruptedException

但是这个函数的调用者将不得不处理那个潜在的异常。由于中断在这里看起来不是一个严重的问题(睡眠只是比两秒短一点),因此忽略异常可能没问题:

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

为了从当前方法返回,使用return 而不是System.exit()

【讨论】:

  • 当我使用这个时,我不能简单地使用 check();其他方法怎么写?
  • 您面临的问题是什么?如果您只是忽略异常,那么一切都会好起来的吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-06
  • 1970-01-01
  • 1970-01-01
  • 2011-02-09
  • 2011-08-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多