JAVA 编程题不会,求教!

选择一组等长的英文单词,例如,一组4个字母组成的单词:
Work back come deal desk book java tool face
一组5个字母组成的单词:
Watch match noise risky stock
试定义一个字符串数组,数组中每一个元素存储一个英文单词,元素个数根据选择的英语单词长度而定。再按照电话机表盘定义数字与字母的对应关系。如数字2对应a或b或c,数字5对应j或k或l。现编制一个程序,要求将用户输入的数字串转换成相应的字符串(注意一个数字串对应多个字符串),将这些字符串与数组中存储的英文单词逐个比较,如果某一字符串与英文单词匹配成功,则在屏幕上输出数字串及对应的单词,如果都不匹配,则在屏幕上输出一条信息“没有匹配的单词”。

package cn.charise.day;

import java.util.Scanner;

class StringTest
{
public static void main(String[] args)
{
String [] str1 ={"watch","match","noise","risky","stock" };
String str2="" ;
System.out.println("请输入数字:");
Scanner scan = new Scanner(System.in);
str2 = scan.next();
char[] ch = str2.toCharArray();
char[][] cha =new char[6][5];
for(int i =0;i<ch.length;i++){
switch(ch[i]){
case '2':cha[i]=new char[]{'a','b','c'};break;
case '3':cha[i]=new char[]{'d','e','f'};break;
case '4':cha[i]=new char[]{'g','h','i'};break;
case '5':cha[i]=new char[]{'j','k','l'};break;
case '6':cha[i]=new char[]{'m','n','o'};break;
case '7':cha[i]=new char[]{'p','q','r'};break;
case '8':cha[i]=new char[]{'s','t','u'};break;
case '9':cha[i]=new char[]{'y','w','x'};break;
}
}
int r=0;
String [] result =new String[3*3*3*3*3];
for(int i=0;i<3;i++){
result[r]+=cha[0][i];
for(int j=0;j<3;j++){
result[r]+=cha[0][j];
for(int k=0;k<3;k++){
result[r]+=cha[0][k];
for(int m=0;m<3;m++){
result[r]+=cha[0][m];
for(int n=0;n<3;n++){
result[r]+=cha[0][n];
r++;
}
}
}
}
}
boolean flag = false;
int i;
for( i=0;i<result.length;i++){
for(int j=0;j<str1.length;j++){
if(result[i].equals(str1[j])){
flag=true;
break;
}
}
}
if(flag)
System.out.println("找到了,这个单词是:"+result[i]);
else
System.out.println("没能找到这个单词");
scan.close();
}
}

提示:该java代码只能输入5个2-9的数字,如果输入不规范可能会出现异常!
温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答