帮我解释下一个java程序 谢谢(高手进).

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了帮我解释下一个java程序 谢谢(高手进).相关的知识,希望对你有一定的参考价值。

这是一个完整的程序,请帮下忙 把这个程序从头到尾解释一下 细致一点谢谢了 用汉字的 每一步做什么的 用的是什么方法 这个方法的作用谢谢了。
public class AvoidFile_old
public static void main(String[] args)
String filepath = "d:/Test/myFile.txt";

if(args.length>0)
filepath = args[0];


File aFile = new File(filepath);
FileOutputStream outputFile = null;
if (aFile.isFile())
File newFile = aFile;

do
String name = newFile.getName();
int period = name.indexOf('.');
if(period == -1)
newFile = new File(newFile.getParent(), extendName(name));
else
newFile = new File(newFile.getParent(),
extendName(name.substring(0, period))
+ name.substring(period));

while(!aFile.renameTo(newFile));


try
outputFile = new FileOutputStream(aFile);
System.out.println(aFile.getName()+" output stream created");
catch (FileNotFoundException e)
e.printStackTrace(System.err);

System.exit(0);

private static String extendName(String name)
StringBuffer newName = new StringBuffer(name);
String digits = newName.substring(newName.length()-3,newName.length());
int number = 0;
try
number = Integer.parseInt(digits);
++number;
newName.delete(newName.length()-3,newName.length());
catch(NumberFormatException nfe)

digits = String.valueOf(number);
assert digits.length() < 4;

return newName.append("000").replace(newName.length()-digits.length(),newName.length(), digits).toString();


能说明白的 另外加分。 200分也行 说明白了给你加250分,前提要清楚 要分不是问题。
如果说的好 还有800分都当做解释程序用了 我这里还有几个程序等着呢!

public class AvoidFile_old
public static void main(String[] args)
//定义一个字符串filepath为一个文件地址的绝对路径
String filepath = "d:/Test/myFile.txt";
/*
* args 这个字符串数组是保存运行main函数时输入的参数,也就是说你编译好了文件是这样运行的java AvoidFile_old xx yy
* 这表示你有两个参数:xx和yy args[0]为xx args[1]为yy
* 如果args的长度大于0,也就是说args数组中有字符串
* 那么就把args数组中的第一个字符串赋值给filepath
* 如果你没有在运行时输入参数,就是简单的运行的话此数组为空if下的语句不执行
* 我认为这段程序有点无厘头,就整个程序而言没有什么意义,可以不考虑,可能整个程序作为模块还有其他作用
* */
if(args.length>0)
filepath = args[0];

//通过将给定路径名字符串转换为抽象路径名aFile(aFile的值为d:/Test/myFile.txt)
//来创建一个新 File 实例。抽象路径名可以理解为输入的d:/Test/myFile.txt
File aFile = new File(filepath);
//FileOutputStream用于写入诸如图像数据之类的原始字节的流
FileOutputStream outputFile = null;
//判断此抽象路径名表示的文件是否是一个标准文件
if (aFile.isFile())
//如果是,创建一个newFile就为此标准文件 此时抽象路径名newFile为d:/Test/myFile.txt
File newFile = aFile;

do
//返回由此抽象路径名表示的文件名称给name。此时得到的name的值为myFile.txt
String name = newFile.getName();
//返回name中"."第一次出现处的索引给period,即myFile.txt根据.索引到的位置period为6(从0开始数)
int period = name.indexOf('.');
if(period == -1)
//period == -1表示给定的文件名不存在(表示你定义的String filepath = "d:/Test/.txt";是这样的或更不全)
/* newFile = new File(newFile.getParent(), extendName(name));表示
* extendName(name)请看程序下段private static String extendName(String name)的方法
* newFile.getParent()得到的是父目录,如果你输入的filepath = "d:/Test/.txt"
* 那么父目录为d:/Test
* 根据 parent(即newFile.getParent())路径名字符串和 child(extendName)路径名字符串创建一个新 File 实例
* 此时创建的实例文件所在路径为d:/Test/extendName(name).txt
* */
newFile = new File(newFile.getParent(), extendName(name));
else
/* 如果文件名不为空的话,
* 根据 parent(newFile.getParent())路径名字符串和 child(extendName) 路径名字符串创建一个新 File 实例
* newFile.getParent()返回newFile父目录的路径名字符串即d:/Test
* extendName()得到的是文件名+点,"d:/Test/myFile.txt"就是"myFile."
* name.substring(0, period))+ name.substring(period))表示
* 返回字符串name=myFile.txt的一个子字符串。该子字符串从指定的0处开始,直到索引最后位 - 1 处的字符第一次创建时
* 为myFile,第二次源目录创建时为myFile000
* 再+name.substring(period)得到一个 .
* */
newFile = new File(newFile.getParent(),
extendName(name.substring(0, period))
+ name.substring(period));

//如果aFile没有重新命名为newFile抽象路径名表示的文件,则循环上面的操作
while(!aFile.renameTo(newFile));


try
//文件已经创建则输出文件名
outputFile = new FileOutputStream(aFile);
System.out.println(aFile.getName()+" output stream created");
catch (FileNotFoundException e)
e.printStackTrace(System.err);

System.exit(0);

//定义方法extendName
private static String extendName(String name)
//把newName定义为动态可变字符串,这样newName可以随时改变,比如下面的newName.delete()方法
StringBuffer newName = new StringBuffer(name);
//获得digits是newName中除点之外的后三位字符串(因为name是文件名加点在上面已经讲了)
//substring方法返回的是 从指定的 beginIndex 处开始,直到索引 endIndex - 1 处的字符
//所以点. 就不包在digits中,获得的是纯文件名
String digits = newName.substring(newName.length()-3,newName.length());
int number = 0;
try
/*此段程序为整个程序的最精彩之处,把digits转化为整型number,
* 如果在原路径中创建了一个同名时,会自动在文件明后加上000
* 然后通过下面这段程序在000上进行递增即++number
*
* */
number = Integer.parseInt(digits);
++number;
newName.delete(newName.length()-3,newName.length());
catch(NumberFormatException nfe)

//吧number转化为字符串型
digits = String.valueOf(number);
//做声明
assert digits.length() < 4;
/*
*
* */
return newName.append("000").replace(newName.length()-digits.length(),newName.length(), digits).toString();


//注:你必须在c盘中有Test文件夹存在才能运行,如果多次运行改程序那么在你的d:\Test文件夹下有myFile00*.txt文件
参考技术A //只是直接翻译一下,整个程序到底实现了什么功能还要自己整理!

public class AvoidFile_old
public static void main(String[] args)
//初期设定一个文件路径
String filepath = "d:/Test/myFile.txt";
//如果参数长度大于0的话
if(args.length>0)
//把文件路径设定为第一个参数的值
filepath = args[0];

//实例一个文件对象
File aFile = new File(filepath);
//声明一个文件输出流变量
FileOutputStream outputFile = null;
//如果aFile对象是一个文件的话(还有可能是目录)
if (aFile.isFile())
//声明文件类型变量newFile并且给其赋值:aFile
File newFile = aFile;
//循环开始
do
//取得文件名
String name = newFile.getName();
//取得文件名中第一个'.'的位置
int period = name.indexOf('.');
//如果文件名中没有'.'的话
if(period == -1)
//根据文件名和扩展名重新实例newFile 文件对象
newFile = new File(newFile.getParent(), extendName(name));
//如果文件名中有'.'的话
else
//根据文件名和扩展名重新实例newFile 文件对象
newFile = new File(newFile.getParent(),
extendName(name.substring(0, period))
+ name.substring(period));

//循环条件
while(!aFile.renameTo(newFile));


try
//创建文件输出流
outputFile = new FileOutputStream(aFile);
//输出信息
System.out.println(aFile.getName()+" output stream created");
catch (FileNotFoundException e)
//创建输出流失败的话打印错误信息
e.printStackTrace(System.err);

//返回0:成功退出系统
System.exit(0);


//取得文件扩展名的方法(参数name是文件路径)
private static String extendName(String name)
StringBuffer newName = new StringBuffer(name);
//截取字符串newName的最后三个字符
String digits = newName.substring(newName.length()-3,newName.length());
int number = 0;
try
//将字符创digits转换成int型
number = Integer.parseInt(digits);
//number自动加1
++number;
//将字符串newName的后三个字符删掉
newName.delete(newName.length()-3,newName.length());
catch(NumberFormatException nfe)

digits = String.valueOf(number);
assert digits.length() < 4;

return newName.append("000").replace(newName.length()-digits.length(),newName.length(), digits).toString();

参考技术B 这么多要求太麻烦了,先加到200再做

JAVA 闹钟程序

请高手帮我个忙啊。。我想做个JAVA闹钟。请高手给我个实例代码。。谢谢了。。在网上百度了几个都没用。。(或者我不知道用)。。请高手帮帮忙啊。。小弟我刚学。。谢谢

import java.util.*;
import java.awt.*;
import java.applet.*;
import java.text.*;
import java.awt.event.*;

public class Alarm extends Applet implements Runnable

Thread timer=null; //创建线程timer
Image gif1; //clockp:闹钟的外壳,闹铃和报时物
boolean setflag=false,stopflag=false,cancelflag=false;
Panel setpanel;
//获取声音文件
AudioClip ring=getAudioClip(getCodeBase(), "1.mid");
Button setbutton=new Button("SET");
Button cancelbutton=new Button("CANCEL");
Button stopbutton=new Button("STOP");
//响应按钮事件
private ActionListener setli=new ActionListener()

public void actionPerformed(ActionEvent e)

setflag=true;

;
private ActionListener cancelli=new ActionListener()

public void actionPerformed(ActionEvent e)

setflag=true;

;
private ActionListener stopli=new ActionListener()

public void actionPerformed(ActionEvent e)

ring.stop();
//清除的方法
//g.clearRect(83,280,20,30);

;

Label note1=new Label("Alarm clock:");
//GregorianCalendar提供的是一个日历式的东东,上面又多了很多的参数,是方便操作了不少。而Date类的功能远不及其,求个和日期有联系的还要自己计算。
GregorianCalendar cal=new GregorianCalendar();
GregorianCalendar cal2=new GregorianCalendar();
SimpleDateFormat df=new SimpleDateFormat("yyyy MM dd HH:mm:ss");//设置时间格式
Date dummy=new Date(); //生成Data对象
String lastdate=df.format(dummy);
Font F=new Font("TimesRoman",Font.PLAIN,14);//设置字体格式
Date dat=null;
Date timeNow;
Color fgcol=Color.blue;
Color fgcol2=Color.darkGray;
Color backcolor=Color.blue;
Label hlabel2,mlabel2,slabel2;//显示时间单位时所用的标签(时、分、秒)
int i;
int s,m,h;
TextField sethour,setmin,setsec;//显示当前时间文本框和定时文本框

//在Applet程序中,首先自动调用初始化完成必要的初始化工作,紧接着自动调用start,在进入执行程序和返回到该页面时被调用,而从该页面转到别的页面时,stop被调用,关闭浏览器时,执行destroy。
public void init()//初始化方法

int fieldx=50,fieldy1=120,fieldy2=220,fieldw=30,fieldh=20,space=50;//显示时间和定时文本框的定位参数
setLayout(null); //将布局管理器初始化为null
setpanel=new Panel();
setpanel.setLayout(null);
setpanel.add(note1);
note1.setBounds(30,100,60,20);
note1.setBackground(backcolor);
note1.setForeground(Color.black);
//定时用的文本框(时、分、秒)
sethour=new TextField("00",5);
setmin=new TextField("00",5);
setsec=new TextField("00",5);
hlabel2=new Label();
mlabel2=new Label();
slabel2=new Label();
//定时的小时文本框的位置、大小
setpanel.add(sethour);
sethour.setBounds(fieldx,fieldy2,fieldw,fieldh);
sethour.setBackground(Color.white);
//在文本框后加入单位“时”
setpanel.add(hlabel2);
hlabel2.setText("h");
hlabel2.setBackground(backcolor);
hlabel2.setForeground(Color.black);
hlabel2.setBounds(fieldx+fieldw+3,fieldy2,14,20);
fieldx=fieldx+space;
//定时的分钟文本框的位置、大小
setpanel.add(setmin);
setmin.setBounds(fieldx,fieldy2,fieldw,fieldh);
setmin.setBackground(Color.white);
//在文本框后加入单位“分”
setpanel.add(mlabel2);
mlabel2.setText("m");
mlabel2.setBackground(backcolor);
mlabel2.setForeground(Color.black);
mlabel2.setBounds(fieldx+fieldw+3,fieldy2,14,20);
fieldx=fieldx+space;
//定时的秒文本框的位置、大小
setpanel.add(setsec);
setsec.setBounds(fieldx,fieldy2,fieldw,fieldh);
setsec.setBackground(Color.white);
//在文本框后加入单位“秒”
setpanel.add(slabel2);
slabel2.setText("s");
slabel2.setBackground(backcolor);
slabel2.setForeground(Color.black);
slabel2.setBounds(fieldx+fieldw+3,fieldy2,14,20);
//设置闹钟控制按钮(on,off)
setpanel.add(cancelbutton);
setpanel.add(setbutton);
setpanel.add(stopbutton);
cancelbutton.setBounds(90,180,40,20);
setbutton.setBounds(140,180,40,20);
stopbutton.setBounds(522,180,40,20);
setbutton.addActionListener(setli);
cancelbutton.addActionListener(cancelli);
stopbutton.addActionListener(stopli);
stopbutton.setVisible(false);
//将面板加入当前容器中,并设置面板的大小和背景色
add(setpanel);
setpanel.setBounds(300,1,250,420);
setpanel.setBackground(backcolor);

/*int xcenter,ycenter,s,m,h;
//闹钟中心点所在位置
xcenter=145;
ycenter=162;
s=(int)cal.get(Calendar.SECOND);
m=(int)cal.get(Calendar.MINUTE);
h=(int)cal.get(Calendar.HOUR_OF_DAY);
//初始化指针位置
lastxs=(int)(Math.cos(s*3.14f/30-3.14f/2)*30+xcenter);
lastys=(int)(Math.sin(s*3.14f/30-3.14f/2)*30+ycenter);
lastxm=(int)(Math.cos(m*3.14f/30-3.14f/2)*25+xcenter);
lastym=(int)(Math.sin(m*3.14f/30-3.14f/2)*25+ycenter);
lastxh=(int)(Math.cos((h*30+m/2)*3.14f/180-3.14f/2)*18+xcenter);
lastyh=(int)(Math.sin((h*30+m/2)*3.14f/180-3.14f/2)*18+ycenter);
lasts=s; */

MediaTracker mt=new MediaTracker(this);//为给定组件创建一个跟踪媒体的MediaTracker对象,把图片添加到被跟踪的图片组

//Java允?Sapplet??HTML所在的位置(decument base)下?d?Y料,也允?Sapplet?钠涑淌酱a所在的位置(code base)下?d?Y料。藉由呼叫getDocumentBase()?cgotCodeBase()可得到URL物件。?@些函?????湍阏业侥阆胂螺d的?n案的位置
//clockp=getImage(getDocumentBase(),"11.png");
gif1=getImage(getCodeBase(),"2.gif");

//i为id号

mt.addImage(gif1,i++);

try

mt.waitForAll();

catch(InterruptedException e)
;//等待加载结束
resize(600,420);//设置窗口大小

//窗口显示有改变的时候调用paint
public void paint(Graphics g)
//重写paint()方法
int xh,yh,xm,ym,xs,ys,strike_times;
int xcenter,ycenter;
String today;
xcenter=148;
ycenter=186;
dat=new Date();
//用当前时间初始化日历时间
cal.setTime(dat);
//读取当前时间
s=(int)cal.get(Calendar.SECOND);
m=(int)cal.get(Calendar.MINUTE);
h=(int)cal.get(Calendar.HOUR_OF_DAY);
//换一种时间表达形式
today=df.format(dat);
//指针位置
xs=(int)(Math.cos(s*3.14f/30-3.14f/2)*30+xcenter);
ys=(int)(Math.sin(s*3.14f/30-3.14f/2)*30+ycenter);
xm=(int)(Math.cos(m*3.14f/30-3.14f/2)*25+xcenter);
ym=(int)(Math.sin(m*3.14f/30-3.14f/2)*25+ycenter);
xh=(int)(Math.cos((h*30+m/2)*3.14f/180-3.14f/2)*12+xcenter);
yh=(int)(Math.sin((h*30+m/2)*3.14f/180-3.14f/2)*12+ycenter);
//设置字体和颜色
g.setFont(F);
//前景色

g.setColor(getBackground()); //取背景色的
g.drawImage(gif1,75,110,this);
//以数字方式显示年、月、日和时间
g.drawString(today,55,415);

//画指针
g.drawLine(xcenter,ycenter,xs,ys);
g.drawLine(xcenter,ycenter-1,xm,ym); //(x1,y1,x2,y2)
g.drawLine(xcenter-1,ycenter,xm,ym);
g.drawLine(xcenter,ycenter-1,xh,yh);
g.drawLine(xcenter-1,ycenter,xh,yh);

int timedelta;//记录当前时间与闹铃定时的时差
Integer currh,currm,currs;//分别记录当前的时、分、秒

Date dat2=new Date();
cal2.setTime(dat2);
//读取当前时间
currh=(int)cal2.get(Calendar.SECOND);
currm=(int)cal2.get(Calendar.MINUTE);
currs=(int)cal2.get(Calendar.HOUR_OF_DAY);
//这样做的话说我API已过时
//timeNow=new Date();
//currh=new Integer(timeNow.getHours());
//currm=new Integer(timeNow.getMinutes());
//currs=new Integer(timeNow.getSeconds());

if(setflag)
//判断是否设置了闹钟
//判断当前时间是否为闹钟所定的时间
if((currh.intValue()==Integer.valueOf(sethour.getText()).intValue())&&(currm.intValue()==Integer.valueOf(setmin.getText()).intValue())&&(currs.intValue()==Integer.valueOf(setsec.getText()).intValue()))

ring.play();
g.drawImage(gif1,83,280,this);
stopbutton.setVisible(true);

timedelta=currm.intValue()*60+currs.intValue()-Integer.valueOf(setmin.getText()).intValue()*60-Integer.valueOf(setsec.getText()).intValue();
if((timedelta>=30))

//若当前时间与闹钟相差时间超过30秒,闹钟自动停
ring.stop();
//清除的方法
g.clearRect(83,280,20,30);


dat=null;


public void start()

if(timer==null)

timer=new Thread(this);//将timer实例化
timer.start();



public void stop()

timer=null;


//给创建线程后start之后自动执行的函数
public void run()

//在run()方法中,调用repaint()方法,以重绘小程序区,进行时钟显示的更新。接着调用sleep方法让当前线程(也就是我们创建的线程clockthread)睡眠1000毫秒,因为我们每秒钟要更新一下显示,所以让它睡眠1秒
while(timer!=null)

try

timer.sleep(1000);

catch(InterruptedException e)

//调用repaint时,会首先清除掉paint方法之前的画的内容,再调用paint方法
repaint();//刷新画面

timer=null;


//当AWT接收到一个applet的重绘请求时,它就调用applet的 update(),默认地,update() 清除applet的背景,然后调用 paint()。重载 update(),将以前在paint()中的绘图代码包含在update()中,从而避免每次重绘时将整个区域清除
//有两种方法可以明显地减弱闪烁:重载 update()或使用双缓冲。
//使用双缓冲技术:另一种减小帧之间闪烁的方法是使用双缓冲,它在许多动画Applet中被使用。其主要原理是创建一个后台图像,将需要绘制的一帧画入图像,然后调用DrawImage()将整个图像一次画到屏幕上去;好处是大部分绘制是离屏的,将离屏图像一次绘至屏幕上比直接在屏幕上绘制要有效得多,大大提高做图的性能。
// 双缓冲可以使动画平滑,但有一个缺点,要分配一张后台图像,如果图像相当大,这将需要很大一块内存;当你使用双缓冲技术时,应重载 update()。

public void update(Graphics g)

Image offscreen_buf=null;
//采用双缓冲技术的update()方法
if(offscreen_buf==null)
offscreen_buf=createImage(600,420);
Graphics offg=offscreen_buf.getGraphics();
offg.clipRect(1,1,599,419);
paint(offg);
Graphics ong=getGraphics();
ong.clipRect(1,1,599,419);
ong.drawImage(offscreen_buf,0,0,this);


/** Creates a new instance of AlarmClock */

参考资料:http://conjs.cn

参考技术A //OK 写好了...怕你不懂 帮你加了注释

package 娱乐;

import java.applet.Applet;
import java.applet.AudioClip;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.net.MalformedURLException;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.swing.*;
public class Alarm extends JFrame implements Runnable
JLabel ri ,shi, fen, miao, dangqian;

JButton queding, dakai;

JTextField music,RI, SHI, FEN, MIAO;

int h=0,f=0,m=0,r=0;
boolean fo=false;
public AudioClip soumd1;
public Alarm()
Container c = getContentPane();
c.setLayout(new GridLayout(3, 1));
JPanel jp = new JPanel();
dangqian = new JLabel();
jp.add(dangqian);
c.add(jp);
JPanel jp1 = new JPanel();
music = new JTextField(20);
dakai = new JButton("选择闹铃音乐");
jp1.add(music);
jp1.add(dakai);
c.add(jp1);
ri = new JLabel("日");
RI = new JTextField(4);
shi = new JLabel("时");
SHI = new JTextField(4);
fen = new JLabel("分");
FEN = new JTextField(4);
miao = new JLabel("秒");
MIAO = new JTextField(4);
JPanel jp2 = new JPanel();
jp2.add(ri);
jp2.add(RI);
jp2.add(shi);
jp2.add(SHI);
jp2.add(fen);
jp2.add(FEN);
jp2.add(miao);
jp2.add(MIAO);
queding = new JButton("确定");
jp2.add(queding);
c.add(jp2);
setSize(400, 130);
setVisible(true);
dakai.addActionListener(new ActionListener()
public void actionPerformed(ActionEvent event)
JFileChooser fileChooser = new JFileChooser(); // 实例化文件选择器
fileChooser
.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); // 设置文件选择模式,此处为文件和目录均可
fileChooser.setCurrentDirectory(new File(".")); // 设置文件选择器当前目录
fileChooser
.setFileFilter(new javax.swing.filechooser.FileFilter()
public boolean accept(File file) // 可接受的文件类型
String name = file.getName().toLowerCase();
return name.endsWith(".wav")
|| name.endsWith(".au")
|| file.isDirectory();


public String getDescription() // 文件描述
return "音乐文件(*.wav,*.au)";

);
if (fileChooser.showOpenDialog(Alarm.this) == JFileChooser.APPROVE_OPTION) // 弹出文件选择器,并判断是否点击了打开按钮
String fileName = fileChooser.getSelectedFile().getAbsolutePath(); // 得到选择文件或目录的绝对路径
music.setText(fileName);


);
queding.addActionListener(new ActionListener()
public void actionPerformed(ActionEvent event)
if(queding.getText().equals("确定"))
try
r=Integer.parseInt(RI.getText());
h=Integer.parseInt(SHI.getText());
f=Integer.parseInt(FEN.getText());
m=Integer.parseInt(MIAO.getText());
if(1<=h&&h<=31&&0<=h&&h<=23&&0<=f&&f<=59&&0<=m&&m<=59)

fo=true;

else
JOptionPane.showMessageDialog(null, "输入时间错误");

catch(Exception e)
JOptionPane.showMessageDialog(null, "请输入正确的时间");



else

fo=false;
RI.setEditable(true);
SHI.setEditable(true);
FEN.setEditable(true);
MIAO.setEditable(true);
queding.setText("确定");
soumd1.stop();


);



public static void main(String agrs[])
Alarm s = new Alarm();
Thread t1 = new Thread(s);
t1.start();
s.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);


public void run()
while (true)
Date now = new Date();
dangqian.setText("当前时间: " + now.toString());
if(fo)

RI.setEditable(false);
SHI.setEditable(false);
FEN.setEditable(false);
MIAO.setEditable(false);
queding.setText("关闭");
SimpleDateFormat ri=new SimpleDateFormat("dd"); //封装 为了获取日期
SimpleDateFormat shi=new SimpleDateFormat("kk"); //封装 为了获取小时
SimpleDateFormat fen=new SimpleDateFormat("mm"); //封装 为了获取分钟
SimpleDateFormat miao=new SimpleDateFormat("ss"); //封装 为了获取秒钟
int riqi=Integer.parseInt(ri.format(now)); //获取日期
int shizhong=Integer.parseInt(shi.format(now)); //获取小时
int fenzhong=Integer.parseInt(fen.format(now)); //获取分钟
int miaozhong=Integer.parseInt(miao.format(now)); //获取秒钟
if(riqi==r&&shizhong==h&&fenzhong==f&&miaozhong==m) //判断条件

try
soumd1=Applet.newAudioClip(new File(music.getText()).toURL()); //播放音乐
soumd1.loop(); //我设置的是循环播放..这样不起床都不行..
fo=false;
catch (MalformedURLException e)
e.printStackTrace();



try
Thread.sleep(1000);
catch (InterruptedException ie)




本回答被提问者和网友采纳
参考技术B import java.util.Timer;
import java.util.TimerTask;

public class MyDoit
public static void main(String[] args)
new Timer().schedule(new TimerTask()
public void run()
System.out.println("简单的闹钟");

, 0, 1000 * 60 * 60 * 24);

以上是关于帮我解释下一个java程序 谢谢(高手进).的主要内容,如果未能解决你的问题,请参考以下文章

delphi 高手进,系统服务编程

帮我解释下java计算器代码中的除法运算谢谢

DOTA高手进,100分起

我一开机就出现下面图片那个提示,我不知道哪个程序的问题,求高手帮我解答下!!谢谢了

JAVA编写类似按键精灵的程序用于游戏 会被检测到么?懂底层工作原理的JAVA高手进

java中的 Annotation类。希望高手能够简单明了解释下用法和作用