美国电话从信件转换为数字

时间:2015-06-29 13:49:34

标签: java if-statement

认为我在某处出错了所以我可以使用一些帮助。好的想法就是拥有通常在手机上找到的字母。例如如果我想找到HAIRCUT的数字,它应该输出像4247288.

public class PhoneNumber
{
    String s;
    int i;

    private void PhoneNumber()
    { 
      if ("ABC".contains(""+s.charAt(i))){
          i=2;
        }
          else if ("DEF".contains(""+s.charAt(i))){
              i=3;
            }
            else if ("GHI".contains(""+s.charAt(i))){
                i=4;
            }
            else if ("JKL".contains(""+s.charAt(i))){
                 i=5;
            }
            else if ("MNO".contains(""+s.charAt(i))){
                i=6;
            }
            else if ("PQRS".contains(""+s.charAt(i))){
                i=7;
            }
            else if ("TUV".contains(""+s.charAt(i))){
                i=8;
            }
            else if ("WXYZ".contains(""+s.charAt(i))){
                i=9;
            }                     
    }
    public void decode(){
        PhoneNumber pn = new PhoneNumber();
        pn.decode("HAIRCUT")
        pn.decode("NEWCARS"); 
    }
   }

我知道我缺少东西,甚至最后都是println但需要指导如何做到这一点。如果你看代码ABC会出现2,DEF为3等任何想法?对于我失败的尝试,我提前向Java道歉。

2 个答案:

答案 0 :(得分:2)

我这样写:

for (int i=0; i< line.length(); i++){
   convert(line.charAt(i));
}


private static int convert(char c){
    int answer;
    switch(c){
        case 'A': 
        case 'B': 
        case 'C':
            answer = 2;
            break;
        case 'D':
        case 'E':
        case 'F':
            answer = 3;
            break;
        ....
    }
    return answer;
}

答案 1 :(得分:0)

我会这样解决:

private static String digits = "22233344455566677778889999";

public static String convert(String input) {
    char[] chars = input.toCharArray();
    for(int i=0; i<chars.length; i++) {
        if(chars[i] >= 'A' && chars[i] <= 'Z')
            chars[i] = digits.charAt(chars[i]-'A');
    }
    return new String(chars);
}

digits字符串实际上是来自&#39; A&#39;的字母之间的映射。到了&#39; Z&#39;到数字(其中的第一个符号对应于&#39; A&#39;,第二个符号为&#39; B&#39;等等)。