Java:charAt 转换为 int?

标签 java

我想输入我的 nirc 号码,例如S1234567I 然后将 1234567 单独作为一个整数作为 indiv1 作为 charAt(1), indiv2charAt(2)indivcharAt(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/

相关文章:

java - 通过每次迭代更改每个字母将一个词转换为另一个词的算法应该形成另一个有意义的词?

java - 如何在这一行中拆分日期?

java - Android 空指针异常/调用目标异常

java - 如何使用 hibernate 将这个复杂的对象持久保存到数据库中?

java - 在中风android上设置渐变

java - ant 目标将 war 部署到 tomcat7/webapps

java - 如何通过selenium java定位并单击href属性中包含javascript的链接

java - 下载 Artifact builder.jar时,Ionic/Android构建失败[Gradle]

java - 使用 ASP.NET Web API 调用 Java Web 服务

java - hibernate 映射 : one column to multiple tables