Java从控制台读取数据

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就结束,还没验证成功,输出结果为:

1234
49
50
51
52
10
我输入的数据为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 56
12
输入的数据为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 ab
12
ab
我本来的输入是把“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
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值