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()方法把它转成数字。
实在是太麻烦了
大家有没有什么好方法?
如
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()方法把它转成数字。
实在是太麻烦了
大家有没有什么好方法?
at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:783)
at java.io.ObjectInputStream.<init>(ObjectInputStream.java:280)
at javaio.main(javaio.java:13)
Scanner scanner = new Scanner(System.in);
scanner.nextInt(); // 读int
scanner.nextDouble(); // 读double
scanner.nextLine(); // 读一行
//读取数据速度快
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();
}}
我觉得如果是简单的小程序的输入的话,直接使用Scanner比较方便,他支持任何数据的输入;
而大一点的应用的话,用io流,感觉用得比较多的是DataInputStrean,BufferedReader
等来封装System.in;
空格的ascii 是16 所以得到的就不一样http://hi.baidu.com/ffxung/blog/item/cdccc8e93259533ab90e2d5e.html