0

これは現在、java を使用して a、b、c などをループ (スキャン回数) で連結する必要があるコードです。

public String toString()
{
  String answers = "";
  int numChoices = choices.length;
  char letter;
  String result;
  int letterNum = 0061;
  while (numChoices > 0)
  {
     letter = "\u" + letterNum;
     result  = letter + ") " + choices[choices.length-numChoices] + "\n";
     answers += result;
     numChoices --;
     letterNum ++;
  }

  return question + "\n" + answers;
}

Unicode エスケープ シーケンスが最善の選択肢だと思っていましたが、試した方法ではうまくいかなかったので、明らかに何か間違ったことをしています。これを修正するにはどうすればよいですか?

私が得ているエラーは次のとおりです。

MultChoice.java:40: illegal unicode escape
     letter = "\u" + letterNum;
4

2 に答える 2

2

Unicode エスケープは、解析の前に、コンパイルの非常に早い段階でjavac によって処理されます。コンパイラは Unicode エスケープを認識せず、コード ポイントのみを認識します。したがって、実行時にそれらを使用することはできません。代わりに、これを試してください:

public String toString()
{
  String answers = "";
  int numChoices = choices.length;
  char letter = 'a';
  String result;
  while (numChoices > 0)
  {
     result  = "" + letter + ") " + choices[choices.length-numChoices] + "\n";
     answers += result;
     numChoices --;
     letter ++;
  }

  return question + "\n" + answers;
}

Acharは単なる符号なし 16 ビット整数なので、インクリメントなど、通常の整数操作をすべて行うことができます。別の必要はありませんint--'a'そして(char) 0x61同じものです。

于 2015-02-21T20:40:54.773 に答える
0

の値letterNumは 49 (8 進数では 61) であるため、"\u49"有効ではありません。

を使用することになっていた可能性が0x0061あり、それをStringusingに変えInteger.toHexString(letterNum)ます。

String編集: using を作成できないようです"\u" + something

だから、可能な方法はCharacter.toString((char) letterNum)です。

于 2015-02-21T20:37:03.073 に答える