为什么输出的和输入的不一样

package first.test;
import java.io.*;
public class rte{
public static void main(String args[]){
int a=0;
try {
a=System.in.read();
}catch(IOException e) {
e.printStackTrace();
}

System.out.println("计算矩形面积是:"+a);
}
}

45
计算矩形面积是:52

System.in.read()返回一个整型字节数据,该数据表示的是字节因此是Unicode的第一个字节或是字符的ASCII码值
read函数返回的是第一个字符'4'的ASCII码。'4'的ASCII码就是52
你输入4开头都是输出52
=========
要想输入整数,应该用
Scanner scan = new Scanner(System.in);
a = scan.nextInt();
来实现

ava 中的System.in.read()
功能:
1.这个方法返回输入内容的ASCII码值。例如用int a=System.in.read();再输出a的值,结果会是49;

2.这个方法只提取输入流的第一个字符。例如你输入abcde,再输出a的值的时候,结果是97;

3.此方法把空格,TAB,回车等间隔符都当作输入流,如TAB键输出后为9,Enter键输出后对应两个ASCII码值,为13和10。

4.如果输入的为小数,此方法会将其分解,如输入1.2,分别用a,b,c三个变量接受的或,在输出a,b,c,结果是49,46(逗号的ASCII码值),50。

这种方法用的地方比较少
用Scanner流输入:

public static void main(String[] args) {
        int a=0;
        Scanner in=new Scanner(System.in);
        a=in.nextInt();
        System.out.println("计算矩形面积是:"+a);
    }
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632