认为我在某处出错了所以我可以使用一些帮助。好的想法就是拥有通常在手机上找到的字母。例如如果我想找到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道歉。
答案 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;等等)。