int data=System.in.read() 报错么???

解决方案 »

  1.   

    BufferedReader stdin =
          new BufferedReader(
            new InputStreamReader(System.in));      
        System.out.print("Enter a line:");
        System.out.println(stdin.readLine());
      

  2.   

    import java.util.*;
    import java.io.*;
    public class jiecheng
    {
     static int jjiecheng(int i){
          if(i==0)
    return 1;
          else{
    return i*jjiecheng(i-1);
    }
         }
         
     public static void main(String[] args) throws IOException
      {
        int c=0;
        int temp=0;
        c=System.in.read();
            System.out.println("c="+c);
        if(c<0){
         System.out.println("^_^负数怎么会有阶乘^_^");
         return;
         }
        else if(c==0){
         System.out.println("0的阶乘总是1 ^_^");
         }
        else
        {
            temp=jjiecheng(c);
            System.out.println(temp);
        }
      }
    }
    然后,无论我输入什么数值(10以内),结果都是都是0,郁闷。我想原因可能是read()读入的是一个字符数据,不是整型的。所以造成这种结果,那么用什么方法解决呢?类型转换吗?或者还有其它的方法?谢谢了。
      

  3.   

    因为System.in.read()只接受一个字符,而InputStream.read()返回的整型是一个ASCII值。所以要减去48。(1的ASCII值为49)
    我的修改如下:import java.util.*;
    import java.io.*;
    public class exec
    {
     public static int jjiecheng(int i){
          if(i==0)
    return 1;
          else{
    return i*jjiecheng(i-1);
    }
         }
         
     public static void main(String [] args) throws IOException  
      {
        char c;
       int  s;
        int temp=0;
        c=(char)System.in.read();
        s=c-48;// ASCII码转化为整数
            System.out.println("the Keyboard code:"+ c);
           System.out.println("the Decimal is:"+ s);
        if(s<0){
         System.out.println("^_^负数怎么会有阶乘^_^");
         return;
         }
        else if(s==0){
         System.out.println("0的阶乘总是1 ^_^");
         }
        else
        {
            temp= jjiecheng(s);
            System.out.println(temp);
        }
      }
    }各位还有什么建议,请多指教