public class Demo{

public static void main(String arg[])throws Exception{
                int hour;    System.out.println("请输入时间:");         hour=(int)System.in.read();
if(hour >=7 && hour < 12)

System.out.println("早上好! ");else if(hour >= 12 && hour < 15)
 System.out.println("下午好 !");
 

else if(hour >= 15 && hour < 21)

System.out.println("晚上好 !");
 
else
System.out.println("晚安! ");}
}       
请帮我看一下这个题  条件语句 哪里错了 
可以通过编译   在运行时   无论你输入 哪个数字  结果全是输出晚安。
请大家看一下啊

解决方案 »

  1.   

    System.in.read()获取的是ASCII码值
      

  2.   

    你读到的只是它的Ascii码,可以把它转化为字符流,然后再把读到的字符强制转化为int型
    ,修改如下
    import java.io.*;
    public class Demo{
    public static void main(String arg[])throws Exception{
              int hour = 0;
          System.out.println("请输入时间:");
    try {
                                //转换
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    hour = Integer.parseInt(br.readLine());
    }catch(Exception e) {
    e.printStackTrace();
    }
    if(hour >=7 && hour < 12)

    System.out.println("早上好! "); else if(hour >= 12 && hour < 15)
     System.out.println("下午好 !");
     

    else if(hour >= 15 && hour < 21)

    System.out.println("晚上好 !");
     
    else
    System.out.println("晚安! "); }
    }
      

  3.   

    上面方法完全可以,但是在1.5种也可以使用Scanner来读取
    import java.util.Scanner;public class Demo{
    public static void main(String arg[]) {
              int hour = 0;
              Scanner in  = new Scanner(System.in);   //获取标准输入流-键盘
          System.out.println("请输入时间:");
              if (hasNextInt()) {
                  hour = nextInt();
              }下同
      

  4.   

    你读到的只是它的Ascii码,不能正确显示,要把它转化为字符流,然后再把读到的字符强制转化为int型
      

  5.   

    字符串是不能直接转成简单类型int型的
      

  6.   

    BufferedReader bfIn=new BufferedReader(new InputStreamReader(System.in));
    hour=Integer.parseInt(bfIn.readLine());