请教各位高手帮我这个新人解决一个程序问题! 我想任意输入年,月,日,然后判断输入的日期是星期几,要求是年月日都必须有合法验证,对于这里的验证怎么才能做到?如果输入错误就继续输入,不会退出。请高手指教! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用C++写得~算法你可以参考#include <iostream>using namespace std;int main(){char *libai[]={"日", "一", "二", "三", "四", "五", "六"};int y, m, d, xingqi=1, run=0, total=0, runnum=0;cout<<"请输入日期(例如1981 5 21):";cin>>y>>m>>d;if (y%400==0 || (y%4==0 && y%100!=0)) run=1;if (y<1 || m<1 || m>12 || d<1) xingqi=0; /*xingqi变量为最后输出的结果,但如果输入了错误的时间就没 有必要继续运行程序,这时用这个变量来判断是否满足要求!*/switch (m) { case 1 : case 3 : case 5 : case 7 : case 8 : case 10: case 12: if (d>31) xingqi=0; break; case 2 : if (run==1 ? d>29 : d>28) xingqi=0; break; default: if (d>30) xingqi=0; }if (xingqi==0) { cout<<"输入错误,请重新运行程序\n"; return 0; }for (int i=1; i<y; i++) if (i%400==0 || (i%4==0 && i%100!=0)) runnum++;total=(y-1)*365+runnum; //此时的total为年份经过的天数!runnum=total; //runnum(作用完成),用来存放年份的天数!total+=(m-1)*30; for (i=1; i<m; i++) { switch (i) { case 1 : case 3 : case 5 : case 7 : case 8 : case 10: case 12: total++; break; case 2 : if (run) total--; else total-=2; break; } } //此时的total为年份和月份一共经过的天数!total+=d; //此时的total为总共经过的天数!xingqi=total%7;total-=runnum; //总天数-年所经过的天数=今年的天数!cout<<"\n您输入的日期是: 星期"<<libai[xingqi];cout<<"\n\n它是"<<y<<"年的第 "<<total<<" 天\n";return 0;} 在C++中这样写没什么问题,但在JAVA中,这样写容易出现输入多次的情况,或者是输入错误就退出的情况,小弟以前用C++写出过,但JAVA就出问题了 public static String getWeekDay(int year,int month,int date){GregorianCalendar d=new GregorianCalendar(); d.set(year,month,date); int m=d.get(Calendar.DAY_OF_WEEK); String str=null; switch(m) { case 1: str="星期天"; break; case 2: str="星期一"; break; case 3: str="星期二"; break; case 4: str="星期三"; break; case 5: str="星期四"; break; case 6: str="星期五"; break; case 7: str="星期六"; break; default: break; } return str;} for (int i=1; i<y; i++) if (i%400==0 || (i%4==0 && i%100!=0)) runnum++;total=(y-1)*365+runnum; //此时的total为年份经过的天数!runnum=total; //runnum(作用完成),用来存放年份的天数!total+=(m-1)*30; for (i=1; i<m; i++) { switch (i) { case 1 : case 3 : case 5 : case 7 : case 8 : case 10: case 12: total++; break; case 2 : if (run) total--; else total-=2; break; } } //此时的total为年份和月份一共经过的天数!total+=d; //此时的total为总共经过的天数!xingqi=total%7;total-=runnum; ///这些地方不是很理解?能给讲一下吗? tomison()的程序小弟不知道该如何运行,望指教! 在JAVA中有委托这个专业术语吗? 接触JAVA三年了,突然发现一个内部类的问题?求解 什么叫 Java 不提供类的多重继承,但提供接口多重继承机制? swing工程怎么须知 请问,谁有MS ACCESS的JDBC驱动? 各位大虾,求自动生成数值型ID的算法 快郁闷死了,看tij 请问有没有关于struts和tiles集合的例子啊?急啊 向java高手请教。 急!救命!!!Jlabel画面不显示,无论setIcon或是repaint() 我有一段程序,算法已经写好,但我还没有学习界面,和io,在线等 大虾们我连接SQL数据库出现问题帮帮忙啊
using namespace std;int main()
{
char *libai[]={"日", "一", "二", "三", "四", "五", "六"};
int y, m, d, xingqi=1, run=0, total=0, runnum=0;
cout<<"请输入日期(例如1981 5 21):";
cin>>y>>m>>d;
if (y%400==0 || (y%4==0 && y%100!=0)) run=1;
if (y<1 || m<1 || m>12 || d<1) xingqi=0;
/*xingqi变量为最后输出的结果,但如果输入了错误的时间就没
有必要继续运行程序,这时用这个变量来判断是否满足要求!*/
switch (m)
{
case 1 :
case 3 :
case 5 :
case 7 :
case 8 :
case 10:
case 12: if (d>31) xingqi=0; break;
case 2 : if (run==1 ? d>29 : d>28) xingqi=0; break;
default: if (d>30) xingqi=0;
}
if (xingqi==0) { cout<<"输入错误,请重新运行程序\n"; return 0; }
for (int i=1; i<y; i++) if (i%400==0 || (i%4==0 && i%100!=0)) runnum++;
total=(y-1)*365+runnum; //此时的total为年份经过的天数!
runnum=total; //runnum(作用完成),用来存放年份的天数!
total+=(m-1)*30;
for (i=1; i<m; i++)
{
switch (i)
{
case 1 :
case 3 :
case 5 :
case 7 :
case 8 :
case 10:
case 12: total++; break;
case 2 : if (run) total--;
else total-=2; break;
}
} //此时的total为年份和月份一共经过的天数!
total+=d; //此时的total为总共经过的天数!
xingqi=total%7;
total-=runnum; //总天数-年所经过的天数=今年的天数!
cout<<"\n您输入的日期是: 星期"<<libai[xingqi];
cout<<"\n\n它是"<<y<<"年的第 "<<total<<" 天\n";
return 0;
}
{
GregorianCalendar d=new GregorianCalendar();
d.set(year,month,date);
int m=d.get(Calendar.DAY_OF_WEEK);
String str=null;
switch(m)
{
case 1: str="星期天"; break;
case 2: str="星期一"; break;
case 3: str="星期二"; break;
case 4: str="星期三"; break;
case 5: str="星期四"; break;
case 6: str="星期五"; break;
case 7: str="星期六"; break;
default: break;
}
return str;
}
total=(y-1)*365+runnum; //此时的total为年份经过的天数!
runnum=total; //runnum(作用完成),用来存放年份的天数!
total+=(m-1)*30;
for (i=1; i<m; i++)
{
switch (i)
{
case 1 :
case 3 :
case 5 :
case 7 :
case 8 :
case 10:
case 12: total++; break;
case 2 : if (run) total--;
else total-=2; break;
}
} //此时的total为年份和月份一共经过的天数!
total+=d; //此时的total为总共经过的天数!
xingqi=total%7;
total-=runnum; ///这些地方不是很理解?能给讲一下吗?