这是我目前必须使用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;
答案 0 :(得分:1)
在解析之前,Unicode转义由编译初期的javac, very 处理。编译器永远不会看到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;
}
char
只是一个无符号的16位整数,所以你可以用它做所有正常的整数,比如递增。不需要单独的int
- 'a'
和(char) 0x61
是相同的。
答案 1 :(得分:0)
letterNum
的值为49(八进制为61),因此变为"\u49"
,这是无效的。
您可能应该使用0x0061
,然后使用String
将其转为Integer.toHexString(letterNum)
。
修改:您似乎无法使用String
创建"\u" + something
。
所以,可能的方法是Character.toString((char) letterNum)
。