2013-03-24 66 views
0

這是我使用J Creator LE製作的代碼。 我還在這個初學者,我希望你能幫助我。爲什麼沒有有效的方法工作?

public class TelNumHelper{ 
public static void main(String[] Args){ 
    String input = "1-800-FLO-WERS"; 
    String output = " "; 
    int Key2,Key3,Key4,Key5,Key6,Key7,Key8,Key9,Key0; 
    Key2 = 2; 
    Key3 = 3; 
    Key4 = 4; 
    Key5 = 5; 
    Key6 = 6; 
    Key7 = 7; 
    Key8 = 8; 
    Key9 = 9; 
    Key0 = 0; 

    for(int i = 0;i<input.length();i++){ 
     if(input.charAt(i)=='-'){ 
      output = output + input.charAt(i); 
     }else{ 
      output = output + valid(input.charAt(i)); 
     } 

    } 

public static char valid(char input){ 

      if(input == A||input == B||input == C||input == 2){ 
       System.out.println(Key2); 
      }else if(input == D||input == E||input == F||input == 3){ 
       System.out.println(Key3); 
      }else if(input == G||input == H||input == I||input == 4){ 
       System.out.println(Key4); 
      }else if(input == J||input == K||input == L||input == 5){ 
       System.out.println(Key5); 
      }else if(input == M||input == N||input == O||input == 6){ 
       System.out.println(Key6); 
      }else if(input == P||input == Q||input == R||input == S||input == 7){ 
       System.out.println(Key7); 
      }else if(input == T||input == U||input == V||input == 8){ 
       System.out.println(Key8); 
      }else if(input == W||input == X||input == Y||input == Z||input == 9){ 
        System.out.println(Key9); 
      }else if(input == 0){ 
       System.out.println(Key0); 

      }else{ 
       System.out.println("Error"); 
      } 
     } 
    } 

}

如何使該方法的工作? 我試過使用不同種類的方法,但它仍然不起作用

這段代碼應該輸出數字而不是字符,每個字符都應該改成數字。我用手機鍵盤作爲改變字符數字的基礎。

+2

你是什麼意思「不工作」到底是什麼? – 2013-03-24 09:56:10

+0

不應該使用'A'而不是A? (對於所有字母) – Ioan 2013-03-24 09:57:12

+0

表達式的非法開始是我構建它時的消息 – user2204221 2013-03-24 10:04:22

回答

1

您的valid方法確實會打印出字符而不是返回它們。除了名稱暗示此方法進行某種驗證之外,if個案必須使用return。 您已將鍵定義爲整數,但您確實想要使用適當的數字返回字符。而且你必須和字符進行比較,而不是一些稱爲A,B等的靜態變量。你可能應該是這樣的:

char Key1 = '1'; 
char Key2 = '2'; 
... 

public static void Main(string[] args) { 
    string input = "0-800-FLO-WERS"; 
    string output = ""; 

    for(....)... 

} 

public static char valid(char input) 
{ 
    if ((input == 'A') || (input == 'B') ...) 
     return Key1; 
    else if .... 
} 
+0

當我建立它,「公共靜態字符有效(字符輸入)」仍然沒有被接受,消息是它是一個「非法表達式開始」 – user2204221 2013-03-24 10:48:48

0

如果你編譯和測試你去,你不會寫很多代碼,需要稍後修復。通常在翻譯中有一些映射更簡單。這裏有一種方法可以做到這一點

public class Main { 
    static final String codes = "00000" + 
      "11111" + 
      "22ABC" + 
      "33DEF" + 
      "44GHI" + 
      "55JKL" + 
      "66MNO" + 
      "7PQRS" + 
      "88TUV" + 
      "9WXYZ"; 

    public static void main(String... ignore) { 
     String input = "1-800-FLO-WERS"; 
     String output = convertTextToDigits(input); 
     System.out.println(input + " can be dialed as " + output); 
    } 

    private static String convertTextToDigits(String input) { 
     StringBuilder sb = new StringBuilder(input.length()); 
     for(char ch: input.toCharArray()) { 
      int pos = codes.indexOf(ch); 
      if (pos >=0) 
       sb.append(pos/5); 
     } 
     return sb.toString(); 
    } 
} 

打印

1-800-FLO-WERS can be dialed as 18003569377 
+0

此代碼工作,但' - '必須仍然在輸出 示例1-800-356-9377 – user2204221 2013-03-24 10:25:38

+0

這是一個小問題,您只需添加兩行。我相信你可以解決它。 ;) – 2013-03-24 10:27:57

+0

好的。非常感謝你..:) – user2204221 2013-03-24 10:29:48

相關問題