Java报警程序未运行

Java报警程序未运行,java,netbeans,Java,Netbeans,所以我得到了一个报警程序的代码,这个程序是在互联网上用java编写的,但仍然有一些错误,我不知道如何修复,因为我对java编程还不熟悉。 我希望能在这方面得到帮助,谢谢 package alarm; import java.io.IOException; import java.util.*; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.JOptionPane; pub

所以我得到了一个报警程序的代码,这个程序是在互联网上用java编写的,但仍然有一些错误,我不知道如何修复,因为我对java编程还不熟悉。 我希望能在这方面得到帮助,谢谢

package alarm;


import java.io.IOException;
import java.util.*;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
public class Alarm { Thread t; int str = 0;
public void checkAlarm(int h,int m,final String ampm,final String message)
{ final int a=h,b=m;

if(ampm.equals("AM"))
{
str=0;
}
else if(ampm.equals("PM"))
{
str=1;
}
final boolean whileloop=true;
t=new Thread(){ public void run(){ while(whileloop==true) 
{ Calendar d=new GregorianCalendar(); int hours=d.get(Calendar.HOUR); 
int   mins=d.get(Calendar.MINUTE); int str1=d.get(Calendar.AM_PM); 
if(a==hours&&b==mins&&str==str1) 
{ // AlarmClock ac=new AlarmClock(null,true); try { JOptionPane.showMessageDialog(null,"Alarm Works!"); // ac.getAlarm(message); break; } catch (IOException ex) { } } } }

};
t.setPriority(Thread.MIN_PRIORITY);
t.start();
} public static void main(String ar[])
{
Alarm a=new Alarm();
a.checkAlarm(4,58,"AM","XD");
}

我很难读懂代码,所以我试着把它整理一下。这似乎是一个更大的图景的一部分。我设想Alarm类是AlarmClock的一部分(成员),这在代码的注释部分提到过。或者Alarm是AlarmClock的内部类?至少我会这么想。因为它调用getAlarm()。用“message”作为参数调用该方法很奇怪。除非类中没有对AlarmClock的引用。我更喜欢getAlarm().getMessage()。 但是我会让闹钟有一个运行的线程,而不是闹钟。我不知道。当我不了解整个情况时,很难说。无论如何。试着把它清理干净,做成某种工件

这可能是cpu密集型的。也应该有一个塞子的方法来停止线程,可能还有很多其他的东西。这绝不是一个正确的答案,只是我希望能给大家一些启示。也许你可以提供更多的信息或代码,这是它的一部分

import java.util.Calendar;
import java.util.GregorianCalendar;

public class Alarm2 {

    private int str = 0;
    private int a;
    private int b;
    private Thread t; 
    private volatile boolean whileloop = true;

    public static void main(String[] args) {
        Alarm2 a = new Alarm2();
        a.checkAlarm(4,36,"AM","XD");
    }

    public void checkAlarm(int h,int m, String ampm, String message) {
        this.a = h;
        this.b = m;

        if(ampm.equals("AM")) {
            str=0;
        }
        else if(ampm.equals("PM")) {
            str=1;
        }

        t = new Thread() {
            public void run() {
                while(whileloop == true) {
                    Calendar d = new GregorianCalendar(); 
                    int hours = d.get(Calendar.HOUR); 
                    int mins = d.get(Calendar.MINUTE); 
                    int str1 = d.get(Calendar.AM_PM);

                    if((a == hours) && (b == mins) && (str == str1)) { 
                        // AlarmClock ac=new AlarmClock(null,true); try { JOptionPane.showMessageDialog(null,"Alarm Works!"); // ac.getAlarm(message); break; } catch (IOException ex) { } } } }
                        System.out.println("Ring Ring!!!! Alarm working :)");
                        break;
                    }
                }
            }
        };

        t.setPriority(Thread.MIN_PRIORITY);
        t.start();
    }
}

错误是什么?