一道JAVA编程题

编写一个Java应用程序,当用户在输入对话框中输入两个日期后(日期格式为YYYYMMDD,如1999年1月12日应输入为19990112),程序将判断两个日期的先后顺序,... 编写一个Java应用程序,当用户在输入对话框中输入两个日期后(日期格式为YYYYMMDD,如1999年1月12日应输入为19990112),程序将判断两个日期的先后顺序,以及两个日期之间的间隔天数(例如1999年1月1日和1999年1月2日之间的间隔是1天)。 展开
 我来答
ajax_2003
2009-06-25 · TA获得超过4995个赞
知道大有可为答主
回答量:2628
采纳率:0%
帮助的人:2458万
展开全部
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
* 编写一个Java应用程序,当用户在输入对话框中输入两个日期后(日期格式为YYYYMMDD,
* 如1999年1月12日应输入为19990112),程序将判断两个日期的先后顺序,
* 以及两个日期之间的间隔天数(例如1999年1月1日和1999年1月2日之间的间隔是1天)。
*
* @author Administrator
*/
public class DateManipulation {
public static void main(String[] args ) {
BufferedReader in = null;

try {
// user input Date
SimpleDateFormat sf = new SimpleDateFormat("yyyyMMdd");
in = new BufferedReader(new InputStreamReader(System.in));
String dateStr = in.readLine();
Date udate = sf.parse(dateStr);

// Current Date
SimpleDateFormat sdf = new SimpleDateFormat("yyyy:MM:dd HH:mm:ss");
Calendar cal = Calendar.getInstance();
Date curr = cal.getTime();

StringBuilder msg = new StringBuilder();

if (udate.before(curr))
msg.append("在本日之前: ");
else if (udate.after(curr))
msg.append("在本日之后");

System.out.println(msg.append(compareDate(udate, curr)));
}
catch (Exception e) {
e.printStackTrace();
}
finally {
try {
if (in != null)
in.close();
}
catch (Exception ex) {
ex.printStackTrace();
}
}
}

private static int compareDate(Date one , Date two ) {
return (one.getYear() - two.getYear()) * 365 + (one.getMonth() - two.getMonth()) * 30 + one.getDay() - two.getDay();
}
}
晁兰英衡月
2019-03-26 · TA获得超过3.7万个赞
知道大有可为答主
回答量:1.3万
采纳率:26%
帮助的人:817万
展开全部
java和其他编程语言一样,double类型的运算是有误差的,但是误差是很小的,你计算的精确位是0.1,所以误差不会超过0.01,你可以这样写Math.abs(i-0.3)<0.01||Math.abs(i-0.8)<0.01,abs是Math类中的一个求绝对值的函数,这个你应该是能够看懂了吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式