我想在我的加键nirc数量例如S1234567I,然后把1234567individualy作为一个整数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);
Run Code Online (Sandbox Code Playgroud)
Jon*_*eet 18
您将获得49,50,51等 - 这些是字符"1","2","3"等的Unicode代码点.
如果你知道它们是西方数字,你可以减去'0':
int indiv1 = nric.charAt(1) - '0';
Run Code Online (Sandbox Code Playgroud)
但是,只有在您已在其他地方验证字符串格式正确后才能执行此操作 - 否则您将最终得到虚假数据 - 例如,"A"最终会返回17而不是导致错误.
当然,一种选择是获取值,然后检查结果是否在0-9范围内.另一种方法是使用:
int indiv1 = Character.digit(nric.charAt(1), 10);
Run Code Online (Sandbox Code Playgroud)
如果字符不是合适的数字,则返回-1.
我不确定后一种方法是否会涵盖非西方数字 - 第一种肯定不会 - 但听起来这不会是你的问题.
| 归档时间: |
|
| 查看次数: |
50812 次 |
| 最近记录: |