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

Scannerin=newScanner(System.in);inta=in.nextInt();charc=(char)a;System.out.println(Ch... Scanner in = new Scanner(System.in);
int a = in.nextInt();
char c = (char)a;
System.out.println(Character.isDigit(a));
展开
 我来答
AsunaerK
2019-07-20 · TA获得超过1.1万个赞
知道大有可为答主
回答量:4274
采纳率:84%
帮助的人:594万
展开全部

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

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

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

找一下定义

可以看到这个参数是9;

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

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

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

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

从测试代码可以看出,(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));

}

追问
谢了,辛苦了!
百度网友1f0ad9f
2019-07-20 · 超过131用户采纳过TA的回答
知道小有建树答主
回答量:248
采纳率:72%
帮助的人:109万
展开全部
你的数字要是在48-57就是TURE了,因为这个是数字的字符值。
追问
可以的大神,那再麻烦您再讲一下该如何修改嘛
追答
这个是ASC II的编码标准,48~57就是数字0~9,加个条件,让其判断一下就可以了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式