java 程序为什么是这样,哪里的问题求大神指点

qq_41861567 2018-03-18 10:36:57
import java.util.*;

public class year {


public static void main(String[] args)

{
int year, month, day, sum,leap;

Scanner in=new Scanner(System.in);

System.out.print("Enter year,month,day:");
year=in.nextInt();
month=in.nextInt();
day=in.nextInt();


if (month < 0 || month > 12 || day < 0 || day > 31)
{
System.out.println("输入格式错误,请重新输入!!!");

}

switch(month)/*先计算某月以前月份的总天数*/
{
case 1:sum=0;break;
case 2:sum=31;break;
case 3:sum=59;break;
case 4:sum=90;break;
case 5:sum=120;break;
case 6:sum=151;break;
case 7:sum=181;break;
case 8:sum=212;break;
case 9:sum=243;break;
case 10:sum=273;break;
case 11:sum=304;break;
case 12:sum=335;break;

}
sum=+day; /*再加上某天的天数*/
if(year%400==0||(year%4==0&&year%100!=0))/*判断是不是闰年*/
leap=1;
else
leap=0;
if(leap==1&&month>2)/*如果是闰年且月份大于2,总天数应该加一天*/
sum++;
System.out.printf("%d\n",sum);

}

}

输出的结果为什么会这样????
Enter year,month,day:2016,1,3
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at year.main(year.java:14)
...全文
490 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
火影忍者001 2018-03-19
  • 打赏
  • 举报
回复
因为Enter year,month,day:2016,1,3这种方式输入时,只把(2016,1,3)这个值当做year的变量值进行存储,所以出错,你改为2016(空格)1(空格)3(空格)试试,不行试下下面的代码: package com.apple.test; import java.util.*; public class Year { public static void main(String[] args){ int year, month, day, sum = 0, leap; Scanner in = new Scanner(System.in); System.out.print("Enter year,month,day:"); year = in.nextInt(); month = in.nextInt(); day = in.nextInt(); System.out.println("year = "+year); System.out.println("month = "+month); System.out.println("day = "+day); if (month < 0 || month > 12 || day < 0 || day > 31) { System.out.println("输入格式错误,请重新输入!!!"); } switch (month)/* 先计算某月以前月份的总天数 */ { case 1: sum = 0; break; case 2: sum = 31; break; case 3: sum = 59; break; case 4: sum = 90; break; case 5: sum = 120; break; case 6: sum = 151; break; case 7: sum = 181; break; case 8: sum = 212; break; case 9: sum = 243; break; case 10: sum = 273; break; case 11: sum = 304; break; case 12: sum = 335; break; } sum =sum + day; /* 再加上某天的天数 */ if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0))/* 判断是不是闰年 */ leap = 1; else leap = 0; if (leap == 1 && month > 2)/* 如果是闰年且月份大于2,总天数应该加一天 */ sum++; System.out.printf("%d\n", sum); } }
爱摸鱼de老邪 2018-03-19
  • 打赏
  • 举报
回复
输入格式错误。Scanner类对象在扫描过程中,默认以空格作为分割符来区分不同的token。所以你这里输入2016,3,16会Scanner.nextInt()会判定为不正确的数据类型,抛出InputMismatchException异常。

58,454

社区成员

发帖
与我相关
我的任务
社区描述
Java Eclipse
社区管理员
  • Eclipse
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧