Java 编程 - 当我需要字符时,我的用户名显示整数。为什么?

标签 java string

这是我的代码的副本。这非常简单,我要做的就是获取我的名字的第一个首字母,我的中间名的第一个首字母,以及我的完整姓氏。由于某种原因,输出是“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/

相关文章:

python - 在Python中查找拆分字符串的所有列表排列

javascript - 将 HTML 实体放入 document.createTextNode

java - Spring 安全: Handling BOTH web app security and web service security

java - centos7部署java-web项目时Tomcat无法连接mariadb

java - 控制 Java 中的类可见性

java - 帕克斯考试 2 : gave up waiting for service

string - 在函数调用中发送 QString 的最佳方法是什么?

c++ - STL c++ 项目中的字符串类

Javascript - URL 的奇怪字符串比较行为

java - AChartEngine Y 轴自定义标签区域边距和图表值作为字符串?