Topic: system.in.read()能够读入INT型的数据吗

  Print this page

1.system.in.read()能够读入INT型的数据吗 Copy to clipboard
Posted by: dickran
Posted on: 2006-03-15 20:25

小弟新学JAVA
最近仿造书上遍了一个简易程序
原程序是从键盘读入一个字符并显示
import java.io.*;
public class A{
public static void main (String args[]){
x=(char)System.in.read();
System.out.println(x);
}
}
输入“c” 显示“c”,正常
小弟将其改为
import java.io.*;
public class A{
public static void main (String args[]){
x=(int)System.in.read();
System.out.println(x);
}
}
为什么从键盘输入数字49
而屏幕输出显示的却是另外的数字1

2.Re:system.in.read()能够读入INT型的数据吗 [Re: dickran] Copy to clipboard
Posted by: piaoling
Posted on: 2006-03-15 20:31

你应该参考一下API

3.Re:system.in.read()能够读入INT型的数据吗 [Re: dickran] Copy to clipboard
Posted by: gggcel_5200
Posted on: 2006-03-15 22:11

我也是新手。看的还没有你远呢。你说错了大家不要笑我。
把 x 也定义为 int
是不是就可以了啊?
高手给我们说明一下。。。。。

4.Re:system.in.read()能够读入INT型的数据吗 [Re: dickran] Copy to clipboard
Posted by: laies
Posted on: 2006-03-15 22:58

这段代码能运行嘛?

你们看的是哪本书?
怎么使用public static void main (String args[])
都是这么规范.

5.Re:system.in.read()能够读入INT型的数据吗 [Re: dickran] Copy to clipboard
Posted by: 轻薄的假象
Posted on: 2006-03-15 23:52

对C不是特别熟悉的朋友,总是犯类似比较常识性的错误

你输入49,那么print出一个1,很容易就可以明白,49是1的ASC码

其实可以这样理解,System.in.read()读到了一个int(即使你输入的是一个char,他还是优先转换为这个char的ASC码),本来就是一个int型的返回值再被强制转换一次毫无意义,他如果再赋值给一个char的时候,很不幸,他会从一个int的值变成一个char型的ASC码,如果赋值给一个int型的变量,就是2种结果了


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923