关于System.in.read的问题

qingyingstudio
关于System.in.read的问题

x= System.in.read();

运行输入3,可是得到的结果不是3啊,好像是3的ASCII码吧

请问我要使x为3的话应该怎么写啊?谢谢

jyh20031984
注意你那种方式只能读取单个字节的内容(不可取),用我的方法应该能解决你的问题

import java.io.*;
public class Test{
public static void main(String args[]){
try{
BufferedReader in=new BufferedReader(new InputStreamReader(System.in));



String readLine=in.readLine();
int x=Integer.parseInt(readLine);
System.out.println(x);

}
catch(Exception e){
}
}
}

运行结果如下: javac Test.java
                       java Test
                   输入:1234
                   输出:1234

jyh20031984
如果楼主只是希望解决单个字节数字的问题

只要将x=x-48就可以实现转换

perryhg
不知道你为什么用System.in.read();
通常用的是
BufferedReader br = new BufferedReader(System.in);
String inputStr = br.readLine();

jakieyoung
[quote]原帖由 [i]qingyingstudio[/i] 于 2006-7-2 13:24 发表
x= System.in.read();

运行输入3,可是得到的结果不是3啊,好像是3的ASCII码吧

请问我要使x为3的话应该怎么写啊?谢谢 [/quote]

System.in是个InputStream类型的静态属性,InputStream的read方法
Reads the next byte of data from the input stream.当然是ascii吗了。

版主说的也不完全正确,按照你的写法,必需是输入了3,然后回车才会往下执行。
然而在一些情况下,程序需要对每个键盘输入的字符立刻处理,这时
还是System.in.read()比较好用

艾斯尼勒
嗯。public int read();这个int是unicode编码的值,这样才能接受字符阿

perryhg
[quote]原帖由 [i]jakieyoung[/i] 于 2006-7-3 13:50 发表


System.in是个InputStream类型的静态属性,InputStream的read方法
Reads the next byte of data from the input stream.当然是ascii吗了。

版主说的也不完全正确,按照你的写法,必需是输入了3,然后回车 ... [/quote]
我这里运行System.in.read()也得按回车才能进行啊

int x = System.in.read();
char ch = (char) x;
System.out.println(ch);

xyz20003
你可以自己设置System.in的缓冲哦。

jyh20031984
你看一下哪个jdk帮助文档中的inputstream你就知道 int read()

读取的是一个(byte)字节以int形式保存这样它的取值范围由(-128~127)变成了(0~255)。

并且在从输入设备中读取一个字符时他默认的就是ascii码。要实现数据类型转换一般都是通过我介绍的方法,您可以参考java变程思想中的。io这个章节。

crazywind001
public class echo {

        /**
         * @param args
         */
        public static void main(String[] args) {
                // TODO 自动生成方法存根
                read(System.in);

        }

        public static void read(InputStream in) {
                // TODO 自动生成方法存根
                try{
                        while(true){
                                int i = System.in.read();
                                //char i = (char)in.read();
                                if(i == 'q'){
                                        break;
                                }
                                char c = (char) i;
                                System.out.print(c);
                               
                        }
                }catch(IOException e){
                        System.err.print(e);
                }
                System.out.println();
               
        }

}