Java Alarm程序未运行

时间:2017-05-15 23:31:38

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

1 个答案:

答案 0 :(得分:0)

我很难阅读代码,所以我试着把它清理一下。似乎是它的一部分。我想Alarm类是AlarmClock的一部分(成员),在代码的注释部分中提到。或者Alarm是AlarmClock的内部类?至少这就是我的想象。因为它调用getAlarm()。很奇怪它用“消息”作为参数调用该方法。除非在类中没有引用AlarmClock。我更喜欢getAlarm()。getMessage()。 但后来我会让AlarmClock有一个正在运行的线程而不是Alarm。我不知道。当我不知道整个画面的时候很难说。无论如何。试图清理它并制作一些工件。

这可能是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();
    }
}