1

この単純なコードを実行すると、得られる出力は整数値になります。理由は誰にもわかりません。名の最初の文字と名前の最初の5文字を​​連結して印刷しようとしています。

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)を呼び出すことになります。

名の最初の文字と姓の最初の 5 文字を連結して印刷しようとしています。

あなたが使用することができます:

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

プリミティブcharは、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 コード) に変換します。

必要な値を取得するには、Bobby Dizzle の回答で行われているように、文字列値を使用するか (たとえば、.substring() を呼び出して)、文字列への変換を強制します。

于 2012-12-06T01:41:12.163 に答える
0

これを行う場合: System.out.println (firstName.charAt(0)+lastName.charAt(0));

charあなたは基本的に aで 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 に答える