Java从控制台读取数据

来源:互联网 发布:9神淘宝店 编辑:程序博客网 时间:2024/04/30 00:09

Java小白,记录学习Java的点点滴滴

从控制台读取数据:

一、i = System.in.read()

该方法读取的是字节流,每次read只能读取一个字节,并且返回的是该字节的ASSIC码

例如:

int i = 0;while(i!=-1){i = System.in.read();//read只读一个字符System.out.println(i);//返回的是相应字符的ASIIC码}System.exit(1);

看其它朋友的博客说是遇到-1就结束,还没验证成功,输出结果为:

12344950515210
我输入的数据为1234,输出的为49 50 51 52 10,从输出可以看出,read是每次只读入一个字节,并输出ASSIC码。

最后一个10是代表“\n”换行的ASSIC。

二、Scanner扫描读入数据。

Scanner sc = new Scanner(System.in);System.out.println(sc.nextLine());
Scanner读入字符分为sc.next(),和sc.nextLine(),二者略有不同。

nextLine()以回车作为结束符,回车之前的所有字符都会读入包括空格,tab,逗号等,而next在读到有效字符前,会自动去掉空格,Tab读到有效字符之后遇到空格,Tab,回车就结束。

先看nextLine

例如:

  Scanner sc = new Scanner(System.in);  args[0] = sc.nextLine();

结果:
12 34 56 12 34 56 
输入的时12 34 56,其中包含空格,而输出也是12 34 56,所以nextLine把回车之前的所有字符都读了进来。

再看next

例如:

    args[1] = sc.next();
结果:

12 34 5612
输入的数据为12 34 56,包含空格,输出直接为12,可以看出next遇到空格就结束了。

注:在next和nextLine连用的时候

要把nextLine放在前面,把next放在后面,否则的话会出现错误。

因为next遇到空格就结束,这样当你想输入带有空格或者Tab的字符串时,next只读取了一部分,另一部分被下一个next或nextLine读取了。

例如:

Scanner sc = new Scanner(System.in);args = new String[2];while(sc.hasNext()){args[0] = sc.next();args[1] = sc.next();System.out.println(args[0]+"\r\n"+args[1]+"\r\n");}
结果:

12 ab12ab
我本来的输入是把“12 ab”给argu[0],点击回车再给arg[1]赋值,可是一点击回车程序就赋值完毕arg[0] = 12 arg[1]  = ab
明显的错误。

可以这样更改:

args[0] = sc.nextLine();args[1] = sc.next();
结果:

                         12 ab                          90                         12 ab                          90
这样arg[0] = 12 ab  arg[1] = 90。

OK了。

0 0