Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java编程-我的用户名在需要字符时显示整数。为什么?_Java_String - Fatal编程技术网

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

Java编程-我的用户名在需要字符时显示整数。为什么?,java,string,Java,String,这是我的密码。这很简单,我要做的就是得到我名字的首字母,中间名的首字母,还有我的全名。出于某种原因,输出为“154微克” 代码如下: public class StringPractice { public static void main(String[] args) { String fName = "Landon"; String mName = "Neal"; String lName = "Wiggs"; S

这是我的密码。这很简单,我要做的就是得到我名字的首字母,中间名的首字母,还有我的全名。出于某种原因,输出为“154微克”

代码如下:

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。我打算回来问更多的问题……再次感谢

String.charAt()返回一个
char
。当你把两个字符相加时,你得到一个数字

您可以执行以下操作:

String userName = (fName.charAt(0) + "" + mName.charAt(0) + "" + lName);
String.charAt()返回一个
char
。当你把两个字符相加时,你得到一个数字

您可以执行以下操作:

String userName = (fName.charAt(0) + "" + mName.charAt(0) + "" + lName);

原因是
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会将其强制(转换)为字符串

您需要使用
子字符串(0,1)
等等,而不是
charAt(0)
,以便统一处理字符串

或者,使用

String userName = (fName.charAt(0) + "" + mName.charAt(0) + lName);
或添加括号:

String userName = (fName.charAt(0) + (mName.charAt(0) + lName));

为了防止两个字符相加并转换为
int

,原因是
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会将其强制(转换)为字符串

您需要使用
子字符串(0,1)
等等,而不是
charAt(0)
,以便统一处理字符串

或者,使用

String userName = (fName.charAt(0) + "" + mName.charAt(0) + lName);
或添加括号:

String userName = (fName.charAt(0) + (mName.charAt(0) + lName));

为了防止两个字符相加,从而转换为
int

String。charAt
返回一个
char
,它是一个整数类型:您可以使用它进行数学运算。添加两个
char
s不会连接它们,而是添加数值(它们的Unicode代码点)

在进行此添加时,会发生一种称为“促销”的情况。发件人:

  • 加宽基元转换(§5.1.2)用于转换以下规则指定的一个或两个操作数:

    • 如果任一操作数的类型为
      double
      ,则另一个操作数将转换为
      double
    • 否则,如果任一操作数的类型为
      float
      ,则另一个操作数将转换为
      float
    • 否则,如果任一操作数的类型为
      long
      ,则另一个操作数将转换为
      long
    • 否则,两个操作数都将转换为类型
      int
  • 在本例中,您有两个类型为
    char
    的操作数,因此我们进入最后一种情况:将操作数转换为
    int
    ,然后添加
    int
    s。结果是:一个
    int

    现在,将
    int
    结果“添加”到
    String
    将(通过)将整数转换为字符串,并将其与另一个操作数连接起来


    如果您想连接第一个和中间名称的第一个字符,我认为最简单的方法是使用
    String.substring
    。它将返回一个
    字符串
    ,而不是
    字符
    ,因此
    +
    将按照您的预期进行连接。

    字符串。charAt
    返回一个
    字符
    ,它是一个整数类型:您可以用它进行数学运算。添加两个
    char
    s不会连接它们,而是添加数值(它们的Unicode代码点)

    在进行此添加时,会发生一种称为“促销”的情况。发件人:

  • 加宽基元转换(§5.1.2)用于转换以下规则指定的一个或两个操作数:

    • 如果任一操作数的类型为
      double
      ,则另一个操作数将转换为
      double
    • 否则,如果任一操作数的类型为
      float
      ,则另一个操作数将转换为
      float
    • 否则,如果任一操作数的类型为
      long
      ,则另一个操作数将转换为
      long
    • 否则,两个操作数都将转换为类型
      int
  • 在本例中,您有两个类型为
    char
    的操作数,因此我们进入最后一种情况:将操作数转换为
    int
    ,然后添加
    int
    s。结果是:一个
    int

    现在,将
    int
    结果“添加”到
    String
    将(通过)将整数转换为字符串,并将其与另一个操作数连接起来

    如果您想连接第一个和中间名称的第一个字符,我认为最简单的方法是使用
    String.substring
    。它将返回一个
    字符串
    ,而不是
    字符
    ,因此
    +
    将按照您的预期进行连接。

    让“”在前面形成一个字符串,如下所示,否则将使用字符(数字)的ASCII值

    String userName = ("" +fName.charAt(0) + mName.charAt(0) + lName);
    System.out.println (userName);//LNWiggs
    
    将“”置于前面以形成如下字符串,否则将使用字符(数字)的ASCII值

    String userName = ("" +fName.charAt(0) + mName.charAt(0) + lName);
    System.out.println (userName);//LNWiggs
    

    欢迎使用堆栈溢出和java。

    在java中,有两种基本类型的“things”对象和原语,在方法
    String.charAt()
    的情况下,它返回一个
    char
    ,它不是
    String

    String s=“a”
    char c='a'
    是不同的东西,