输出的是1的acsii码吧,当作字符了
解决方案 »
- MYSQL多重条件查询的问题
- 自定义JTable 运行时报警告
- 有关JPA权限管控问题的请教
- starting filter OpenSessionInViewFilter
- java 如何读写二进制文件
- <<<<你有这样的困扰吗?----软件学员找工作需要项目经验.
- 如何写漂亮的代码?
- 高手请进:Tomcat和Apache整合后浏览器浏览问题,IE显示但是不显示 include进来的页面并且片面不齐,而firefox纯粹不显示
- struts问题,怎样才能在我的机器上看到别人已经做好的struts项目
- eclipse 中运行jsp 点击链接报错 大神帮忙看下
- 求j2ee的程序下载地址
- 学习J2EE,给一点建议吧!来者有分
输入2回车再输入2是822751754
输入11回车是825298186
好象在编译器中调试和在dos中运行结果还不一样,每次输入一个还不行,要输入两次才可以我把程序该成了如下: DataInputStream s = new DataInputStream(System.in);
int g=9;
try
{
g=s.readInt();
}
catch(Exception e)
{
System.out.println("wrong");
}
System.out.println(g);
}
可以肯定一点
g=s.readInt();
是不会报错得,int是4个字节,你输入一个字符才2个字节,也可能久是因为这个,我要连续输入两次(才凑上4个字节),他才出现结果。不知道是不是这样,请高人指点
非常明显,输入的是按字符的ascii码进入。如果不足四字节,认为读取没有完成。读取四个字节后,用这个四个字节组成int的byte.因此会有这样的结果,回车: 0xOA,1:0x31,.......
我输入:12,然后回车,buffer里面存储了四个数,为49,50,13,10,于是你可以发现这正是
"12"在加上回车的ascii码
getInt意思是说读取buffer里面的四个字节数,假如里面的数不够的话,比如你第一次
输入:1在加回车,那么buffer里面的数据只有三个有效:49,13,10,0;但是他是先读取字符数据,
所以读到0结束,因此此时位数不够4,那么还是readInt继续阻塞,直到读到四个字节数据为止。