Java编程-我的用户名在需要字符时显示整数。为什么?
这是我的密码。这很简单,我要做的就是得到我名字的首字母,中间名的首字母,还有我的全名。出于某种原因,输出为“154微克” 代码如下: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
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代码点)
在进行此添加时,会发生一种称为“促销”的情况。发件人:
- 如果任一操作数的类型为
,则另一个操作数将转换为double
double
- 否则,如果任一操作数的类型为
,则另一个操作数将转换为float
float
- 否则,如果任一操作数的类型为
,则另一个操作数将转换为long
long
- 否则,两个操作数都将转换为类型
int
char
的操作数,因此我们进入最后一种情况:将操作数转换为int
,然后添加int
s。结果是:一个int
现在,将int
结果“添加”到String
将(通过)将整数转换为字符串,并将其与另一个操作数连接起来
如果您想连接第一个和中间名称的第一个字符,我认为最简单的方法是使用
String.substring
。它将返回一个字符串
,而不是字符
,因此+
将按照您的预期进行连接。字符串。charAt
返回一个字符
,它是一个整数类型:您可以用它进行数学运算。添加两个char
s不会连接它们,而是添加数值(它们的Unicode代码点)
在进行此添加时,会发生一种称为“促销”的情况。发件人:
- 如果任一操作数的类型为
,则另一个操作数将转换为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'
是不同的东西,