java中的标准输入
发布网友
发布时间:2022-05-14 07:00
我来回答
共4个回答
热心网友
时间:2022-06-24 09:58
1.System.in.read() 从输入流读取下一个数据字节。返回 0 到 255 范围内的 int 字节值 所以即使你输入再多的东西,它只那第一个数据字节
你输入1111111111111111111111111111111111111,它拿到的就是1。1的字节值为48,所以你输出的就是 48+48=96
2.System.out的write是把指定的字节写入此流,字节。要根据平台输出,最好print或者println方法
public class U {
public static void main(String args[]) throws Exception {
int d;
d = System.in.read();//为什么输入111111111111111111111111111111都行,看起来d好像是个字符串
d = d + d;//输入一个整数为什么这条语句不能执行
System.out.print(d);//为什么不管输入什么,d总是原样输出
}
}
热心网友
时间:2022-06-24 09:59
先看下System类的in字段描述
摘自API
in
public static final InputStream in“标准”输入流。此流已打开并准备提供输入数据。通常,此流对应于键盘输入或者由主机环境或用户指定的另一个输入源
说明in是InputStream类型的
我们在找到InputStream类的read方法
public int read()
throws IOException从类 InputStream 复制的描述
从输入流中读取数据的下一个字节。返回 0 到 255 范围内的 int 字节值。如果因为已经到达流末尾而没有可用的字节,则返回值 -1。在输入数据可用、检测到流末尾或者抛出异常前,此方法一直阻塞。
子类必须提供此方法的一个实现。
这下明白了吧,
d=System.in.read();
一次只读一个字节,并且返回的是一个int类型
要是想从控制台输入可以这样
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
try {
String str = br.readLine();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
一次读一行,返回的是字符串
热心网友
时间:2022-06-24 09:59
System.in.read()的是读取Inpustream中的下一个byte,返回的是0到255之间的值,如果读取完毕就返回-1。
你输入1111111,其实d是1的ascii码的值,49.
d=d+d执行完以后,d=98.
还有最后一句:System.out.write(d);为什么用System.out.write呢,要输出用System.out.println(d).
System.out.write是将内容写入System.out流中,并不会输出到控制台,还需要System.out.flush()。
总之,基础的部分你还需要好好看看文档,看看书。
热心网友
时间:2022-06-24 10:00
d 不是字符串.是个整型的变量,你定义个string d;