刚学习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

解决方案 »

  1.   

    int y=System.in.read();这有问题,去看看Inputstream read方法的API
      

  2.   

    我也刚自学不到一个星期。感觉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+"是个平年");
    }
    }
    }
      

  3.   

    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了,建议楼主用我的那个方式来获得终端的参数。
      

  4.   

    public abstract int read() throws IOException从输入流读取下一个数据字节。返回 0 到 255 范围内的 int 字节值。如果因已到达流末尾而没有可用的字节,则返回值 -1。在输入数据可用、检测到流的末尾或者抛出异常前,此方法一直阻塞。 返回:
    下一个数据字节,如果到达流的末尾,则返回 -1。