例3-4 从键盘读入一个‘0’-‘9’之间的数字字符,转换成相对应的int数值后输出
import java.io.*;
class jex3_4{
      public static void main(String args[]throws IOException{
         byte x;//为什么这里不是用 char x;
         System.out.println("请输入一个0-9之间的数字字符:");
         x=(byte)System.in.read();//为什么这里不用x=(char)System.in.read();
         int y=x-48;
         System.out.println("对应的数值为:"+y);
       }
   }

解决方案 »

  1.   

    其实没有为什么的char x;
    x=System.in.read();
    x=(byte)x;
    int y=x-48;输出的结果是一样的。。只是方法不同而已~~
      

  2.   

    是的,并没有什么不同
    之所以这里不用x=(char)System.in.read();
    是应为 x声明的是byte而以
    用KeyboardInput.readCharacter也可以读入一个char
      

  3.   

    这样就可以了import java.io.*;
    class jex3_4{
          public static void main(String args[])throws IOException{
             int x;
             System.out.println("请输入一个0-9之间的数字字符:");
             x=System.in.read();
             System.out.println("对应的数值为:"+(x-48));
           }
       }
      

  4.   

    呵呵,
    纠正一个错误:
    KeyboardInput并不是java的标准类
    是我的一个师兄封装bufferedReader实现的
    不好意思
      

  5.   

    也可以这样
    public class input{
    {
        public static void main(String[] args)
         {
          String input=JOptionPane.showInputDialog("请输入0-9之间的数字字符");
          int i=Integer.parseInt(int);
          System.out.println(i);
          System.exit(0);
          }
    }
      

  6.   

    对不起,我上面发的贴有错,以下面这个为准,我已经测试过了.你试试吧import javax.swing.*;
    public class Num
    {
        public static void main(String[] args)
         {
          String input=JOptionPane.showInputDialog("请输入0-9之间的数字字符");
          int i=Integer.parseInt(input);
          System.out.println(i);
          System.exit(0);
          }
    }
      

  7.   

    在计算机中字符是用字节表示的,所以用byte