java 让用户输入_java,让用户输入一个数,判断用户输入的是否为数字,为什么一下代码结果一直为false。...

展开全部

1、这个原因需要查看Character.isDigit(a)的源码

5d6f5f799ed1dd51d0af64163a82e6f0.png

可以看到,源码中,是直接调用getType(codePoint)去和Character.DECIMAL_DIGIT_NUMBER;做比32313133353236313431303231363533e59b9ee7ad9431333431363030较,判断如果相同就是数字,

那么这个内置参数值是什么?

找一下定义

c0bc6eaec7e88d8ee17725f1dd36aefa.png

可以看到这个参数是9;

那么直接传数字进来的时候,数字的getType()是多少?

005ccb7555042e66a614a16f28b96c55.png写了一个测试代码,可以看到数字的type 是15,就知道,直接传int数肯定是false,

你的代码,虽然写错,想必你的思路是把数字强制转换成char c = (char)a;

但是,强制转换之后是什么?

3bbad7cc519e98ef3f632bec9626e97a.png

从测试代码可以看出,(char)a 还是15.type没有改变,但是传递进来char c,数字5的type就是9,就会返回true。

因此,这个函数需要传递char 字符判断,而且还不能强制转换数字过去。

1、改成这样,获取一个字符,不要把数字转成

public static void main(String[] args) {

System.out.println("请输入一个数字:");

Scanner in = new Scanner(System.in);

int a = in.nextInt();

System.out.println("a type="+ Character.getType(a));

System.out.println("(char)a type="+ Character.getType((char)a));

System.out.println("Character.DECIMAL_DIGIT_NUMBER "+Character.DECIMAL_DIGIT_NUMBER);

System.out.println("请输入一个字符:");

char c =in.next().charAt(0);

System.out.println("c type ="+Character.getType(c));

System.out.println(Character.isDigit(a));

System.out.println(Character.isDigit(c));

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值