1

如果我运行这个简单的代码,我得到的输出是一个整数值,有人知道为什么吗?我正在尝试打印名字的第一个字符和姓氏的前五个字符连接在一起。

Scanner scan = new Scanner (System.in);
String firstName, lastName;

System.out.print ("Enter First Name: ");
firstName = scan.nextLine();
System.out.print ("\n");
System.out.print ("Enter Last Name: ");
lastName = scan.nextLine();

System.out.println (firstName.charAt(0)+lastName.charAt(0));
4

5 回答 5

2

你打电话时

System.out.println (firstName.charAt(0)+lastName.charAt(0));

您最终调用System.out.println(int)由于添加了字符值本身会产生一个整数值。

我正在尝试打印名字的第一个字符和姓氏的前五个字符连接在一起。

你可以使用:

System.out.println(firstName.charAt(0) + lastName.substring(0, 5));
于 2012-12-06T01:34:09.723 回答
1

Primitivechar是与 Java 中的原始类型兼容的类型,int如果添加字符,您将得到它们的 ASCII 码的总和。

System.out.println (firstName.charAt(0)+""+lastName.charAt(0));
于 2012-12-06T01:31:38.873 回答
1

试试这个:

Scanner scan = new Scanner (System.in);
String firstName, lastName;

System.out.print ("Enter First Name: ");
firstName = scan.nextLine();
System.out.print ("\n");
System.out.print ("Enter Last Name: ");
lastName = scan.nextLine();
String s = "" + firstName.charAt(0)+""+lastName.substring(0, 5);
System.out.println(s);
于 2012-12-06T01:32:40.687 回答
1

根据 Java 语言规范:

如果 + 运算符的任一操作数的类型是字符串,则该操作是字符串连接。否则,+ 运算符的每个操作数的类型必须是可转换(第 5.1.8 节)为原始数字类型的类型,否则会发生编译时错误。

http://docs.oracle.com/javase/specs/jls/se5.0/html/expressions.html#15.18

char由于操作符不支持原始类型+,JVM 将char值转换为数值,即 ASCII 码。

要获得您想要的值,请使用字符串值(例如通过调用 .substring()),或强制转换为字符串,如 Bobby Dizzle 的回答中所做的那样。

于 2012-12-06T01:41:12.163 回答
0

当你这样做时: System.out.println (firstName.charAt(0)+lastName.charAt(0));

您基本上尝试添加 achar和 a char。并且编译器实际上尝试对数值进行加法运算。所以println打印加法的结果。

要实际打印您想要的内容,可以使用+带有字符串的运算符(使用subString)或使用String.Format.

所以你也可以这样写:

System.out.println(String.format("%c %s", firstName.charAt(0), lastName.subString(0,5)));
于 2012-12-06T01:44:02.410 回答