2012-10-02 221 views
5

你好我是編程新手,我需要幫助弄清楚我的代碼有什麼問題。需要幫助 - Switch語句

基本上我需要一個字母AZ並將其轉換爲韭蔥(一個符號組合#,字母看起來像AZ字符我只允許使用開關語句(開關,案例,休息)也我必須使用.next()。charAt(0)方法。

我一直在研究幾天,但仍然沒有找到運氣來確定什麼是錯誤的。當我嘗試編譯我的程序時,它出現了多個錯誤所有的閱讀「無法找到符號」在我的情況下語句中使用的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); 
    } 
} 

回答

1

case語句,它應該像

switch (character) 
      { 
       case 'a': Leet = "4"; 
        break; 
       case 'b': Leet = "I3"; 
        break; 
      ......... 
      } 
5

的characte [R常數必須在進入apostraphs:中

case 'a':代替case a:

修復您的代碼,我希望這是你唯一的語法錯誤。

使用 char(這意味着單引號)
+0

嘿它工作,TYVM!這是一個簡單的修復 – user1714873

+1

@ user1714873:如果它解決了您的問題,請不要忘記接受答案。 – Jimmy

0

你的情況應該是這樣的情況下,字符 'A'

switch(character) 

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

,你也正在申報leet(字符串變量兩次)。剛剛宣佈它一個,並使用相同的變量,當您從掃描儀獲取輸入

+0

@hayden編輯了我的答案.. :) – PermGenError

3

而且 - 你是在同一個塊聲明變量「萊特」與「字」兩次(重複的局部變量)

0

使用字符串在切換情況下,只有在使用JDK7時才能使用,即使如此,您也必須使用引號中的值。 Like

case "a": 
+2

他正在切換角色..它應該是'a'。這在Java 6中也是完全有效的。 –