字符常量java无效

时间:2015-10-30 08:22:03

标签: java android eclipse

我正在开发转换器应用程序 以下行给出了一个名为无效字符常量的语法错误。

我不知道如何处理它 欢迎任何形式的帮助或建议。

public static HashMap<Character, String> UNICODE_TRANS = new HashMap<Character, String>();
static {
    UNICODE_TRANS.put('÷', "/");
    UNICODE_TRANS.put('×', "*");
    UNICODE_TRANS.put('÷', "/");
    UNICODE_TRANS.put('×', "*");
    UNICODE_TRANS.put('²', "^2");
    UNICODE_TRANS.put('³', "^3");
    UNICODE_TRANS.put('�', "^4");
    UNICODE_TRANS.put('−', "-");
    UNICODE_TRANS.put('µ', "micro");
    UNICODE_TRANS.put('Ï€', "pi");
    UNICODE_TRANS.put('Π', "pi");
    UNICODE_TRANS.put('€', "euro");
    UNICODE_TRANS.put('Â¥', "japanyen");
    UNICODE_TRANS.put('₤', "greatbritainpound");
    UNICODE_TRANS.put('√', "sqrt");
    UNICODE_TRANS.put('∛', "cuberoot");
    UNICODE_TRANS.put('½', "1|2");
    UNICODE_TRANS.put('â…“', "1|3");
    UNICODE_TRANS.put('â…”', "2|3");
    UNICODE_TRANS.put('¼', "1|4");
    UNICODE_TRANS.put('â…•', "1|5");
    UNICODE_TRANS.put('â…–', "2|5");
    UNICODE_TRANS.put('â…—', "3|5");
    UNICODE_TRANS.put('â…™', "1|6");
    UNICODE_TRANS.put('â…›', "1|8");
    UNICODE_TRANS.put('⅜', "3|8");
    UNICODE_TRANS.put('â…�', "5|8");
}

3 个答案:

答案 0 :(得分:1)

我可以看到你有很多包含多个字符的字符常量。 char constat必须包含一个且只包含一个字符。这就是你的代码无法编译的原因。

您可以通过删除多余字符来解决此问题。但是在你的评论中,我认为你暗示你想要保持常量的含义。即你不想把'Ï'改为'Ï'或'€',因为它会失去意义。

因此,对于替代方法,请使用Map<String, String>代替Map<Character, String>。这样,你可以存储多个角色!

答案 1 :(得分:1)

这必须是字符编码问题。您使用ISO-latin-1编码打开了UTF-8编码文件。在Eclipse中更改编辑器编码Here is an answer如何做到这一点。

对于单个文件,右键单击该文件,打开Properties,然后在Resource下,您可以将文本文件编码更改为other(和您一样)可以选择UTF-8)。

此外,您可能还想更改编译器的字符编码。这可以在Project Compiler设置下完成。右键单击Project,选择Properties,您将在那里看到Builders或Compilers。然后设置输入文件编码。

答案 2 :(得分:0)

对不起,我正在回答我自己的问题 因为 Eclipse IDE ,我已经破坏了我的半天。 Eclipse无法正确打开 UTF-8 文件 当我在简单的 Notepad ++ 编辑器中打开包含上述代码的同一文件时。它看起来像是在跟随。

public static HashMap<Character, String> UNICODE_TRANS = new HashMap<Character, String>();
static {
    UNICODE_TRANS.put('÷', "/");
    UNICODE_TRANS.put('×', "*");
    UNICODE_TRANS.put('÷', "/");
    UNICODE_TRANS.put('×', "*");
    UNICODE_TRANS.put('²', "^2");
    UNICODE_TRANS.put('³', "^3");
    UNICODE_TRANS.put('⁴', "^4");
    UNICODE_TRANS.put('−', "-");
    UNICODE_TRANS.put('µ', "micro");
    UNICODE_TRANS.put('π', "pi");
    UNICODE_TRANS.put('Π', "pi");
    UNICODE_TRANS.put('€', "euro");
    UNICODE_TRANS.put('¥', "japanyen");
    UNICODE_TRANS.put('₤', "greatbritainpound");
    UNICODE_TRANS.put('√', "sqrt");
    UNICODE_TRANS.put('∛', "cuberoot");
    UNICODE_TRANS.put('½', "1|2");
    UNICODE_TRANS.put('⅓', "1|3");
    UNICODE_TRANS.put('⅔', "2|3");
    UNICODE_TRANS.put('¼', "1|4");
    UNICODE_TRANS.put('⅕', "1|5");
    UNICODE_TRANS.put('⅖', "2|5");
    UNICODE_TRANS.put('⅗', "3|5");
    UNICODE_TRANS.put('⅙', "1|6");
    UNICODE_TRANS.put('⅛', "1|8");
    UNICODE_TRANS.put('⅜', "3|8");
    UNICODE_TRANS.put('⅝', "5|8");
}

这些可能会帮助每个使用Eclipse IDE的人都记住这些。

这是Eclipse Comptible Code

public static HashMap<Character, String> UNICODE_TRANS = new HashMap<Character, String>();
static {
    UNICODE_TRANS.put('\u00F7', "/");
    UNICODE_TRANS.put('\u00D7', "*");
    UNICODE_TRANS.put('\u00F7', "/");
    UNICODE_TRANS.put('\u00D7', "*");
    UNICODE_TRANS.put('\u00B2', "^2");
    UNICODE_TRANS.put('\u00B3', "^3");
    UNICODE_TRANS.put('\u2074', "^4");
    UNICODE_TRANS.put('\u2212', "-");
    UNICODE_TRANS.put('\u00B5', "micro");
    UNICODE_TRANS.put('\u03C0', "pi");
    UNICODE_TRANS.put('\u03A0', "pi");
    UNICODE_TRANS.put('\u20AC', "euro");
    UNICODE_TRANS.put('\u00A5', "japanyen");
    UNICODE_TRANS.put('\u00A3', "greatbritainpound");
    UNICODE_TRANS.put('\u221A', "sqrt");
    UNICODE_TRANS.put('\u221B', "cuberoot");
    UNICODE_TRANS.put('\u00BD', "1|2");
    UNICODE_TRANS.put('\u2153', "1|3");
    UNICODE_TRANS.put('\u2154', "2|3");
    UNICODE_TRANS.put('\u00BC', "1|4");
    UNICODE_TRANS.put('\u2155', "1|5");
    UNICODE_TRANS.put('\u2156', "2|5");
    UNICODE_TRANS.put('\u2157', "3|5");
    UNICODE_TRANS.put('\u2159', "1|6");
    UNICODE_TRANS.put('\u215B', "1|8");
    UNICODE_TRANS.put('\u215C', "3|8");
    UNICODE_TRANS.put('\u215D', "5|8");
}