请教一道题(不是作业,自己练习系罢了)
定义4个字母的字符串数组:work、back、come、deal、desk、book、Java、tool、face
试定义一个字符串数组,数组中每个元素存储一个英文单词,元素个数根据选择的英语单词长度而定。再按照电话机表盘定义的数字与字母的对应关系,如数字2对应a或b或c
,数字5对应j或者k或者l。现编制一个程序,要求将用户输入的数字串转换成相应的字符串(注意一个数字串对应多个字符串),将这些字符串与数组中存储的英文单词逐个比较,如果某一字符串与与英文单词匹配成功,则在屏幕上输出数字串以及对应的单词,如果都不匹配,则在屏幕上输出一条信息“没有匹配的单词”。
我看了一下,定义一个字符串,那怎么把数字和字母匹配起来呢?不知道数组中有没有键-值这种对应的匹配方法。请大家讲一下这道题解题思路,谢谢了。
[解决办法]
像手机输入法一样
你第一个数字假设是对应abc, 那么你首先扫描你的英文数组, 抛弃那些非abc打头的, 如此类推下去,
[解决办法]
定义这样一个数组:
char[][] charSet={null,null, {'a','b','c'}, {'d','e','f'}, {'g','h','i'}, {'j','k','l'}, {'m','n','o'}, {'p','q','r','s'}, {'t','u','v'}, {'w','x','y','z'} };
[解决办法]
new Phonekey();
}
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
JButton jbh = (JButton) e.getSource();
keydown+=jbh.getText();
if (jbh.getText().equals("1")) {
temp = key1;
} else if (jbh.getText().equals("2")) {
temp = key2;
} else if (jbh.getText().equals("2")) {
temp = key2;
} else if (jbh.getText().equals("3")) {
temp = key3;
} else if (jbh.getText().equals("4")) {
temp = key4;
} else if (jbh.getText().equals("5")) {
temp = key5;
} else if (jbh.getText().equals("6")) {
temp = key6;
} else if (jbh.getText().equals("7")) {
temp = key7;
} else if (jbh.getText().equals("8")) {
temp = key8;
} else if (jbh.getText().equals("9")) {
temp = key9;
}
if(count==0){
temp1=temp;
}else if(count==1){
temp2=temp;
}else if(count==2){
temp3=temp;
}else if(count==3){
temp4=temp;
}
if(count==3){
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < 3; j++) {
for (int j2 = 0; j2 <3; j2++) {
for (int k = 0; k < 3; k++) {
for (int k2 = 0; k2 < 3; k2++) {
if(array[i].equals(temp1[j]+temp2[j2]+temp3[k]+temp4[k2])){
jl.setText(array[i]+"数字"+keydown);
isExit=true;
}
}
}
}
}
}
}
if(false==isExit&& count==3){
jl.setText("没有匹配的单词");
}
if(count==2){
isExit=false;
}
System.out.println(count);
count++;
if(count==4){
count=0;
keydown="";
}
//System.out.println(jbh.getText());
}
}
[解决办法]
为什么不用hashMap,虽然效率上合数组比可能会差些,但是方便维护,更加符合设计模式