2013-03-24 65 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

相关问题