Java 的输入输出太烦了,像C++,加iostream .h 头文件后,cin、cout就直接可以输入输出,如对于输入的变量,自动转换成所定义的格式。

     int a ;
     cin>>a;
  直接,所输入的数就是a的值。如输入123,则a的值为123.
而对于java,对于标准输出流还好,System.out.print();就可以输出所需要输出的;但对于标准输入流,就是在太麻烦了。
     byte[] a = new byte[];
     System.in.read(a);
得到的a是字节数组,均是ascii编码的数值,如果我想输入数字123,只能先使字节数组为
“1”“2”“3”“ENTER”的ascii码,“1”的ascii码是30,得到{30,31,32,10},然后把字节数组转成字符数组{‘1’,‘2’,‘3’};字符数组再转换成String字符串 “123”;再转成Integer对象,new Integer(String) ,最后使用Integer.intValue()方法把它转成数字。
  实在是太麻烦了
大家有没有什么好方法?

解决方案 »

  1.   

    你用System.in构造一个ObjectInputStream,然后调用readInt试试看。
      

  2.   

    用Integer.parseInt(String s)能少转化一步……
      

  3.   

    貌似不行Exception in thread "main" java.io.StreamCorruptedException: invalid stream header: 340A0D0A
        at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:783)
        at java.io.ObjectInputStream.<init>(ObjectInputStream.java:280)
        at javaio.main(javaio.java:13)
      

  4.   

    可能因为Java本来就不适合做命令行程序的原因吧?不过java 1.5可以用Scanner,还是很方便的:// 需import java.util.Scanner;
    Scanner scanner = new Scanner(System.in);
    scanner.nextInt();  // 读int
    scanner.nextDouble();  // 读double
    scanner.nextLine(); // 读一行
      

  5.   

    BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
    //读取数据速度快
      

  6.   


    import java.util.Scanner;public class SystemIn { /**
     * @param args
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub Scanner scanner = new Scanner(System.in);
    int i = scanner.nextInt();  // 读int
    double d = scanner.nextDouble();  // 读double
    String str = scanner.nextLine(); // 读一行         System.out.println( "i = " + i + "\nd = " + d + "\nstr = "+ str);
    scanner.close();

    }}
      

  7.   

    随便问一下,为什么在输入int,double,String型的字符的时候,用空格隔开和用回车隔开,结果不相同
      

  8.   

    LZ你用的是最低层的字节流啊,当然难用了
    我觉得如果是简单的小程序的输入的话,直接使用Scanner比较方便,他支持任何数据的输入;
    而大一点的应用的话,用io流,感觉用得比较多的是DataInputStrean,BufferedReader
    等来封装System.in;
      

  9.   

    这个问题我想过  在输入的时候windows下每行结尾都有一个"\n\r"  表示换行和回车      ascii是   10 和13 
    空格的ascii 是16  所以得到的就不一样http://hi.baidu.com/ffxung/blog/item/cdccc8e93259533ab90e2d5e.html