我想输入我的 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。
我不确定后一种方法是否会涵盖非西方数字 - 第一种方法肯定不会 - 但听起来这对你的情况来说不是问题。
关于Java:charAt 转换为 int?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2627371/