java代码出错,希望大神求解,小白学java。

publicclasszuoye12{publicstaticvoidmain(String[]args){intsum=0;for(intyear=1900;year<... public class zuoye12{
public static void main(String[] args){
int sum=0;
for(int year=1900;year<=2015;year++){
if(year%4==0&&year&100!=0||year&400==0){
sum+=366;
}else{
sum+=365;
}
for(int month=1;month<=4;month++){
if(month==2){
if(2016%4==0&&2016%100!=0||2016%400=0){
sum+=29;
}else{
sum+=28;
}else{
if(month==4||month==6||month==9||month==11){
sum+=30;
}else{
sum+=31;
}
}
}
sum+=7;
System.out.println("1900年1月1日到2016年5月7日有"+sum+"天");
}
}
}
}

代码出错,没有检查出来,希望大神来帮忙解答,我是小白初学者。莫喷~
展开
 我来答
百度网友55eb82b
2015-04-16 · TA获得超过107个赞
知道答主
回答量:87
采纳率:0%
帮助的人:50万
展开全部

Java中没有 if 嵌套 else 结构

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
GFP_Cold
推荐于2016-05-17 · TA获得超过817个赞
知道小有建树答主
回答量:683
采纳率:50%
帮助的人:547万
展开全部

    题主你好,很高兴回答你的问题,我看到有些大神把你程序的错误说了出来,但是你没有必要写的这么麻烦去计算指定连个日期相差的天数。我简单写了个实现方法,你可以参考下,希望你在想问题的时候能尽量从效率上面下手。希望能帮到你。

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Zuoye12 {
 public static void main(String[] args) throws ParseException {
  String date1="1900-01-01";
  String date2="2016-05-07";
  SimpleDateFormat sdf=new SimpleDateFormat("yyyy-mm-dd");
  Date d1=sdf.parse(date1);
  Date d2=sdf.parse(date2);
  long daysBetween=(d2.getTime()-d1.getTime()+1000000)/(3600*24*1000);
  System.out.println("1900-01-01 与 2016-05-07 相隔 "+daysBetween+" 天");
  
 }
}
追问
多谢java大神程序猿的解答,但是我是初学者,还没有学这么多,只能用书面的知识来解答,感谢你的热心~
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
198901245631
2015-04-16 · TA获得超过3.5万个赞
知道大有可为答主
回答量:9037
采纳率:92%
帮助的人:1730万
展开全部

你好:你的第十四行改一下

}else{ 改为}else  if(条件){;

你的出现两次else,程序报错呢

public class zuoye12 {
public static void main(String[] args){
int sum=0;
for(int year=1900;year<=2015;year++){
if(year%4==0&&year%100!=0||year%400==0){
sum+=366;
}else{
sum+=365;
}
for(int month=1;month<=4;month++){
if(month==2){
if(2016%4==0&&2016%100!=0||2016%400==0){
sum+=29;
}else if(条件){
sum+=28;
}else{
if(month==4||month==6||month==9||month==11){
sum+=30;
}else{
sum+=31;
}
}
}
sum+=7;
System.out.println("1900年1月1日到2016年5月7日有"+sum+"天");
}
}
}
}
追问

我的这里少了两个括号}

追答
你好:
if(2016%4==0&&2016%100!=0||2016%400==0){这个就是个固定值,他给你的是警告,告诉你至二个每次都只能走固定的分支呢,不是变量的if条件句就有这个警告
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
陨落天空ok
2015-04-16 · TA获得超过197个赞
知道小有建树答主
回答量:233
采纳率:71%
帮助的人:108万
展开全部
改成这样就能用了,但是逻辑还有错误,多加了好多
public static void main(String[] args){
int sum=0;
for(int year=1900;year<=2015;year++){
if(year%4==0&&year%100!=0||year%400==0){
sum+=366;
}else{
sum+=365;
}
for(int month=1;month<=4;month++){
if(month==2){
if(2016%4==0&&2016%100!=0||2016%400==0){
sum+=29;
}else{
sum+=28;
}
}else{
if(month==4||month==6||month==9||month==11){
sum+=30;
}else{
sum+=31;
}
}
sum+=7;

}
}
System.out.println("1900年1月1日到2016年5月7日有"+sum+"天");
}
追问
谢谢~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
生活he家
2015-04-16 · 一个属于大家的搬运工
生活he家
采纳数:1536 获赞数:6828

向TA提问 私信TA
展开全部
应该是在这个地方少了一个括号

}else{
sum+=28;
}else{
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式