Java:charAt转换为int?

sli*_*ing 6 java

我想在我的加键nirc数量例如S1234567I,然后把1234567individualy作为一个整数indiv1charAt(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.

我不确定后一种方法是否会涵盖非西方数字 - 第一种肯定不会 - 但听起来这不会是你的问题.