Help 新人疑问关于输入流

christine11w 2013-06-17 04:18:13
最近开始自学Java,今天写了一个关于理解计数器控制循环的小程序,但是在输入的时候碰到点问题,希望大家能帮下忙。


设定的是输入10次,但运行时,只能输入5次,这是为什么?

求解答,先谢过了
...全文
144 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
christine11w 2013-06-18
  • 打赏
  • 举报
回复
引用 4 楼 a1006570862 的回复:
1.楼主可以看下api对于System.in.read()方法的描述( 在Inputstream类里):
从输入流中读取数据的下一个字节。返回 0 到 255 范围内的 int 字节值。如果因为已经到达流末尾而没有可用的字节,则返回值 -1。在输入数据可用、检测到流末尾或者抛出异常前,此方法一直阻塞。
2.我自己写两个read程序来验证要跳过那两个字符:
import java.io.IOException;


public class TextAverage {
	public static void main(String[] args) throws IOException {
		int average;
		for (int i = 0; i < 10; i++) {
		System.out.print("请输入:");
		average = System.in.read();
		System.out.print(average + " ");
		//System.in.skip(2);
		}
	}

}
在程序输出为:
请输入:1
49 请输入:13 请输入:10 请输入:2
50 请输入:13 请输入:10 请输入:3
51 请输入:13 请输入:10 请输入:4
52
楼主可以查下ascii码表,49,50,51分别是1,2,3;而另外那两个字符的ascii是13和10,对应的是换行和回车 3.对于输入为数值建议楼主使用Scanner或者BufferReader。
你的回答好详细啊,十分有帮助,谢谢。
地下室森林 2013-06-17
  • 打赏
  • 举报
回复
1.楼主可以看下api对于System.in.read()方法的描述( 在Inputstream类里):
从输入流中读取数据的下一个字节。返回 0 到 255 范围内的 int 字节值。如果因为已经到达流末尾而没有可用的字节,则返回值 -1。在输入数据可用、检测到流末尾或者抛出异常前,此方法一直阻塞。
2.我自己写两个read程序来验证要跳过那两个字符:
import java.io.IOException;


public class TextAverage {
	public static void main(String[] args) throws IOException {
		int average;
		for (int i = 0; i < 10; i++) {
		System.out.print("请输入:");
		average = System.in.read();
		System.out.print(average + " ");
		//System.in.skip(2);
		}
	}

}
在程序输出为:
请输入:1
49 请输入:13 请输入:10 请输入:2
50 请输入:13 请输入:10 请输入:3
51 请输入:13 请输入:10 请输入:4
52
楼主可以查下ascii码表,49,50,51分别是1,2,3;而另外那两个字符的ascii是13和10,对应的是换行和回车 3.对于输入为数值建议楼主使用Scanner或者BufferReader。
地下室森林 2013-06-17
  • 打赏
  • 举报
回复
要是System.in.skip(2),刚开始也不知道为什么要2,后来看下源代码,要skip(跳过)换行和回车两个字符。
christine11w 2013-06-17
  • 打赏
  • 举报
回复
引用 1 楼 flagiris 的回复:
System.in.skip(2);
改成2的确就好了,但是这是为什么?只有一个换行符啊??
菖蒲老先生 2013-06-17
  • 打赏
  • 举报
回复
System.in.skip(2);

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧