所以我得到了这个代码,用于在互联网上用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");
}
答案 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();
}
}