4

基本上我需要一个字母 AZ 并将其转换为韭菜(符号、#、字母的组合,看起来像 AZ 字符。我只允许使用 switch 语句(switch、case、breaks)我也必须使用.next().charAt(0) 方法。

当我尝试编译我的程序时,它会出现多个错误,所有错误都是指向我在 case 语句中使用的 az 字符的“找不到符号”。

import java.util.Scanner;

public class dlin_Leet
{
    public static void main(String args[])
    {
        Scanner input = new Scanner(System.in);

        char character;//input by user
        String Leet;

        System.out.print("Enter character to convert:");
        String Leet = input.next();
        char character = Leet.charAt(0);

        switch (character)
        {
            case a: Leet = "4";
                break;
            case b: Leet = "I3";
                break;
            case c: Leet = "[";
                break;
            case d: Leet = ")";
                break;
            case e: Leet = "3";
                break;
            case f: Leet = "|=";
                break;
            case g: Leet = "&";
                break;
            case h: Leet = "#";
                break;
            case i: Leet = "1";
                break;
            case j: Leet = "J";
                break;
            case k: Leet = "|<";
                break;
            case l: Leet = "1";

             }
        System.out.println(Leet);
    }
}
4

5 回答 5

5

字符常量必须在撇号中:

case 'a': 代替case a:

修复你的代码,我希望这是你唯一的语法错误。

于 2012-10-02T16:19:13.017 回答
3

另外 - 您在同一块中两次声明变量“Leet”和“字符”(重复的局部变量)

于 2012-10-02T16:23:19.403 回答
1

case 语句使用char(这意味着单引号),它应该是这样的

 switch (character)
            {
                case 'a': Leet = "4";
                    break;
                case 'b': Leet = "I3";
                    break;
             .........
            }
于 2012-10-02T16:19:41.470 回答
0

你的情况应该是一个类似 case 'a' 的字符

 switch(character) 

 {
    case 'a':
       //do your stuff
    }

而且您还声明了leet(两次字符串变量)。当您从扫描仪获得输入时,只需声明一个并使用相同的变量

于 2012-10-02T16:20:23.453 回答
0

只有在使用 JDK7 时才能在 switch case 中使用字符串,即便如此,您也必须将值放在引号中。像

case "a":
于 2012-10-02T16:28:32.903 回答