我想输入我的nirc号码,例如S1234567I然后将1234567单独作为整数作为indiv1作为charAt(1),indiv2作为charAt(2),indiv作为charAt(3)等.但是,当我使用下面的代码时,我似乎无法得到均匀第一个数字?任何的想法?
Scanner console = new Scanner(System.in); System.out.println("Enter your NRIC number: "); String nric = console.nextLine(); int indiv1 = nric.charAt(1); System.out.println(indiv1);
解决方法
您将获得49,50,51等 – 这些是字符“1”,“2”,“3”等的Unicode代码点.
如果你知道它们是西方数字,你可以减去’0’:
int indiv1 = nric.charAt(1) - '0';
但是,只有在您已在其他地方验证字符串格式正确后才能执行此操作 – 否则您将最终得到虚假数据 – 例如,“A”最终会返回17而不是导致错误.
当然,一种选择是获取值,然后检查结果是否在0-9范围内.另一种方法是使用:
int indiv1 = Character.digit(nric.charAt(1),10);
如果字符不是合适的数字,则返回-1.
我不确定后一种方法是否会涵盖非西方数字 – 第一种肯定不会 – 但听起来这不会是你的问题.