charAt() 方法如何从字符串中获取数字并将它们放入 Java 中的新字符串中?
Posted
技术标签:
【中文标题】charAt() 方法如何从字符串中获取数字并将它们放入 Java 中的新字符串中?【英文标题】:How does the charAt() method work with taking numbers from strings and putting them into new strings in Java? 【发布时间】:2020-07-30 19:06:57 【问题描述】:public String getIDdigits()
String idDigits = IDnum.charAt(0) + IDnum.charAt(IDnum.length() - 1) + "";
return idDigits;
在这个简单的方法中,IDnum 是一个由数字组成的 13 位字符串并且是一个类变量,给定的输出绝不是我所期望的。对于 1234567891234 这样的 ID 号,我希望在输出中看到 14,但输出始终是 101 等三位数字。无论我使用什么 ID 号,它始终是一个以 10 开头的 3 位数字. 我认为使用空引号可以避免取 Ascii 值的问题,但我似乎仍然会出错。请问有人能解释一下 charAt() 在这个意义上是如何工作的吗?
【问题讨论】:
【参考方案1】:您从String
中获取char
类型,然后使用+
运算符,在这种情况下,其行为是将ASCII 数值相加。
例如,在您的代码中获取字符'1'
,然后是字符'4'
IDnum.charAt(0) + IDnum.charAt(IDnum.length() - 1)
编译器将其解释为其 ASCII 十进制等价物并添加它们
49 + 52 = 101
这就是你的 3 位数的来源。
在连接它们之前将它们转换回字符串来消除这种情况......
String.valueOf(<char>);
或
"" + IDnum.charAt(0) + IDnum.charAt(IDnum.length() - 1)
【讨论】:
【参考方案2】:试试这个。
public String getIDdigits()
String idDigits = "" + IDnum.charAt(0) + IDnum.charAt(IDnum.length() - 1);
return idDigits;
当你第一次添加一个空时,它会添加char
,比如String
,如果你把它放在最后,它首先添加数字模式(ASCII),然后转换会将其转换为String
。
【讨论】:
【参考方案3】:您必须更明确地了解字符串连接,因此像这样解决您的语句:
String idDigits = "" + IDnum.charAt(0) + IDnum.charAt(IDnum.length() - 1);
添加 Java chars、shorts 或 bytes 的结果是一个 int:
【讨论】:
以上是关于charAt() 方法如何从字符串中获取数字并将它们放入 Java 中的新字符串中?的主要内容,如果未能解决你的问题,请参考以下文章