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()方法把它转成数字。
实在是太麻烦了
大家有没有什么好方法?
------解决方案--------------------
你用System.in构造一个ObjectInputStream,然后调用readInt试试看。
------解决方案--------------------
用Integer.parseInt(String s)能少转化一步……
------解决方案--------------------
可能因为Java本来就不适合做命令行程序的原因吧?不过java 1.5可以用Scanner,还是很方便的:
- Java code
// 需import java.util.Scanner;Scanner scanner = new Scanner(System.in);scanner.nextInt(); // 读intscanner.nextDouble(); // 读doublescanner.nextLine(); // 读一行
------解决方案--------------------
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
//读取数据速度快
------解决方案--------------------
------解决方案--------------------
随便问一下,为什么在输入int,double,String型的字符的时候,用空格隔开和用回车隔开,结果不相同
------解决方案--------------------
LZ你用的是最低层的字节流啊,当然难用了。。。
我觉得如果是简单的小程序的输入的话,直接使用Scanner比较方便,他支持任何数据的输入;
而大一点的应用的话,用io流,感觉用得比较多的是DataInputStrean,BufferedReader
等来封装System.in;