日期:2014-05-20  浏览次数:20795 次

一个小程序输出问题请教
刚学习JAVA,第一个题是判断输入是否为闰年,代码如下:
package 实验一;
import java.io.IOException;

public class Year {
/**使用if...else 语句构造多分支,判断某一年是否为闰年。闰年的条件是符合下
面二者之一:能被4 整除,但不能被100 整除;能被4 整除,又能被400 整除**/

public static void main(String[] args) throws IOException {
//byte[] b=new byte[1000];
//int y=System.in.read(b);
int y=System.in.read();
int a=y%4;
int c=y%100;
int d=y%400;
if(a==0 && c!=0 || d==0)
{
System.out.println(y + "年是闰年");
}
else
{
System.out.println(y + "年不是闰年");
}
}

}
输入“2000”后输出为“50年不是闰年”。不知道是哪里出错了,为什么出现“50”了
java

------解决方案--------------------
int y=System.in.read();这有问题,去看看Inputstream read方法的API
------解决方案--------------------
我也刚自学不到一个星期。感觉LZ写的好麻烦。
这是我自己写的,没别的意思。
import java.util.*;
public class lianxi{
public static void main(String[] args){
Scanner input=new Scanner(System.in);
System.out.println("请输入一个年份:");
int year=input.nextInt();
if(year%4==0&&year%100!=0){
System.out.println();
}else if(year%400==0){
System.out.println(year+"是个平年");
}
}
}
------解决方案--------------------
import java.util.Scanner;

public class Runnian{

public static void main(String[] args) throws Exception{

Scanner scanner = new Scanner(System.in);
int year = scanner.nextInt();

int a = year%4;
int b = year%400;
int c = year%100;

if(a==0 && c!=0){
System.out.println(year+"is Runnian!");
}else if(a==0 && b==0){
System.out.println(year+"is Runnian!");
}else{
System.out.println(year+"is not Runnian!");
}
}

}
建议楼主这样写,输入2000显示的为50这个问题是System.in.read()这个方法引起的。read()方法读取的是一个字符,你输入2000,他只读取第一个也就是'2'这个字符,然后将这个字符通过ASC码转成int类型,通过ASC码表查询'2'这个字符的ASC码值为50,所以显示的就是50了,建议楼主用我的那个方式来获得终端的参数。