这是我的代码的副本。这非常简单,我要做的就是获取我的名字的第一个首字母,我的中间名的第一个首字母,以及我的完整姓氏。由于某种原因,输出是“154Wiggs”
代码如下:
public class StringPractice {
public static void main(String[] args) {
String fName = "Landon";
String mName = "Neal";
String lName = "Wiggs";
String userName = (fName.charAt(0) + mName.charAt(0) + lName);
System.out.println (userName);
}
}
非常感谢您的帮助,这是我第一次来这里,而且我刚刚开始学习 Java。我计划回来问更多问题..再次感谢!
最佳答案
原因是 charAt
方法返回 char
类型,该类型表示字符,但在某些上下文中被解释为 16 位数字。
当您将其中两个加在一起时,您(毫不奇怪)会得到一个数字,并且 Java(也许令人惊讶)将这个数字提升为 int
类型,因此它现在的行为与原始字符不同。
System.out.println(fName.charAt(0)); // L
System.out.println(0 + fName.charAt(0)); // 76
System.out.println(mName.charAt(0)); // N
System.out.println(0 + fName.charAt(0)); // 78
int sum= fName.charAt(0) + mName.charAt(0); // an int, not a char
System.out.println(sum); // 154
但是,当您将数字“添加”到字符串时,Java 会将其强制(转换)为字符串。
您需要使用 substring(0,1)
等来代替 charAt(0)
,以便您能够统一使用字符串。
或者,使用
String userName = (fName.charAt(0) + "" + mName.charAt(0) + lName);
或添加括号:
String userName = (fName.charAt(0) + (mName.charAt(0) + lName));
防止两个字符相加并转换为 int
。
关于Java 编程 - 当我需要字符时,我的用户名显示整数。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28332949/