如何把数字转换英文单词,类似手机数字键盘类似手机数字键盘上:数字1没有英文字母,数字2代表ABC,数字3代表DEF.数字9代表WXYZ现在我有个含英文单词的words.txt文件,如果我输入"224",输出"bag""cai"(

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/05 12:18:59
如何把数字转换英文单词,类似手机数字键盘类似手机数字键盘上:数字1没有英文字母,数字2代表ABC,数字3代表DEF.数字9代表WXYZ现在我有个含英文单词的words.txt文件,如果我输入

如何把数字转换英文单词,类似手机数字键盘类似手机数字键盘上:数字1没有英文字母,数字2代表ABC,数字3代表DEF.数字9代表WXYZ现在我有个含英文单词的words.txt文件,如果我输入"224",输出"bag""cai"(
如何把数字转换英文单词,类似手机数字键盘
类似手机数字键盘上:数字1没有英文字母,数字2代表ABC,数字3代表DEF.数字9代表WXYZ
现在我有个含英文单词的words.txt文件,如果我输入"224",输出"bag""cai"(单词在words.txt里),如果单词库words.txt里面没有"bag""cai",则输出"没有匹配"
import java.io.*;
import java.util.*;
public class Q1{
\x05static ArrayList words = new ArrayList();
\x05final static String alphabet = "abcdefghijklmnoprstuvwxyz";
\x05final static String numbers = "222333444555666777888999";
\x05
\x05public static void main(String args[]) throws IOException{
\x05\x05Scanner scanner = new Scanner(new File("words.txt"));
\x05\x05while (scanner.hasNext())
\x05\x05\x05words.add(scanner.next());
\x05\x05String code = new Scanner(System.in).next();
\x05\x05
\x05\x05for (String word :words)
\x05\x05\x05if (code.equals(toNumber(word))){
\x05\x05\x05\x05System.out.println(word);
\x05\x05\x05\x05System.exit(0);
\x05\x05\x05\x05}
\x05\x05
\x05\x05System.out.println("No solution");
\x05\x05}
\x05
\x05public static String toNumber(String word){
\x05\x05String s = "";
\x05\x05for (int i = 0; i < word.length(); i++)
\x05\x05\x05s += numbers.charAt(alphabet.indexOf(word.charAt(i)));
\x05\x05return s;
\x05\x05}
}
这是我目前乱写的,可以的话麻烦帮我改一下,

如何把数字转换英文单词,类似手机数字键盘类似手机数字键盘上:数字1没有英文字母,数字2代表ABC,数字3代表DEF.数字9代表WXYZ现在我有个含英文单词的words.txt文件,如果我输入"224",输出"bag""cai"(
你这个是考算法的啊!我想到了几点:
1:你要把words.txt单词库中的单词逐个分离出来.这个不难,只要单词库中的单词之间有固定的界限(比如用空格来区分,或是逗号什么的)都可以用java.util.StringTokenizer类来分离.
2:将分离出来的单词存放在ArrayList list中
3:建立英文字母到数字的映射关系:public int index(chat c)//根据输入的char返回对应的数字.不如D/E/F返回3,需要注意的是,大D和小D都返回3.这个不难吧.
4:建立一个单词到数字的映射.public byte[] NOEncoding(String s)用到String类的charAt(int index)方法,逐个提取char,再用index()方法对应的数字来来确定,并将结果存放在byte数组中
5:遍历list链表,利用NOEncoding()方法,建立每个单词到数字的映射,就形成了新的单词库了.
6:最后一步啦,将输入的数字和对应的新的单词库做比较就行了.你的目的达到了.
附:java.util.StringTokenizer
ublic class StringTokenizerextends Objectimplements Enumerationstring tokenizer 类允许应用程序将字符串分解为标记.tokenization 方法比 StreamTokenizer 类所使用的方法更简单.StringTokenizer 方法不区分标识符、数和带引号的字符串,它们也不识别并跳过注释.
可以在创建时指定,也可以根据每个标记来指定分隔符(分隔标记的字符)集.
StringTokenizer 的实例有两种行为方式,这取决于它在创建时使用的 returnDelims 标志的值是 true 还是 false:
如果标志为 false,则分隔符字符用来分隔标记.标记是连续字符(不是分隔符)的最大序列.
如果标志为 true,则认为那些分隔符字符本身即为标记.因此标记要么是一个分隔符字符,要么是那些连续字符(不是分隔符)的最大序列.
StringTokenizer 对象在内部维护字符串中要被标记的当前位置.某些操作将此当前位置移至已处理的字符后.
通过截取字符串的一个子串来返回标记,该字符串用于创建 StringTokenizer 对象.
下面是一个使用 tokenizer 的实例.代码如下:
StringTokenizer st = new StringTokenizer("this is a test");
while (st.hasMoreTokens()) {
System.out.println(st.nextToken());
}
输出以下字符串:
this
is
a
test
public StringTokenizer(String str,
String delim)为指定字符串构造一个 string tokenizer.delim 参数中的字符都是分隔标记的分隔符.分隔符字符本身不作为标记.
注意,如果 delim 为 null,则此构造方法不抛出异常.但是,尝试对得到的 StringTokenizer 调用其他方法则可能抛出 NullPointerException.
参数:
str - 要解析的字符串.
delim - 分隔符.
抛出:
NullPointerException - 如果 str 为 null.
附2:
我觉得这种思路较好一些:
1>如果建立数字到英文字母的映射,那么一个数字将返回多个字母,这个不是很好吧,不如2--abc.
2>建立数字到单词的映射,算法上不太好实现.比如224,就是abc abc ghi的全排雷,就要3*3*3这么多种,要是中文字还可以接受做多也就4*4*4*4*4这么多.但是英文不同了.
3>你单词库中的单词毕竟是有限的,就拿中文汉字来说,最多也1W左右.英文单词也不过如此.
所以这个不是大问题.
综上,我最终选择了这个算法来实现.
代码之际写吧.应该不存在大问题了.
(回答很辛苦啊,我还差6个最佳答案了!)

如何把数字转换英文单词,类似手机数字键盘类似手机数字键盘上:数字1没有英文字母,数字2代表ABC,数字3代表DEF.数字9代表WXYZ现在我有个含英文单词的words.txt文件,如果我输入224,输出bagcai( 手机数字键盘求翻译这段数字24944373654874448453982652433945 JAVA如何把数字1-9转换成英文单词1-9 请问大家手机全盘手写转换字母数字键盘怎么弄?急 如何把手机西班牙文转换成中文? 手机的九宫格密码如何可以重复连比如把手机九宫格当做手机数字键盘 我从7开始划线划到1如何怎么划回4而且可以在4上面停住 Excel中如何将数字转换成日期格式?类似20021221转换成2002-12-21~ 手机英文如何转换汉字 9966337在手机数字键盘上能拼出什么 怎么把时间转换成纯数字类似 2013-01-23转成成纯数字之后为:1358870400 怎么转换的? 把西班牙语的手机如何转换成汉语要什么软件还是什么? 谁能把数字 567 翻译英文单词 电脑键盘为什么按不出来数字?而且一按数字键盘就会出现字.右侧数字键盘也是. 电脑键盘为什么按不出来数字?而且一按数字键盘就会出现字.右侧数字键盘也是. 如何把阿拉伯数字转换成罗马数字至少要转换10000以内的数字 具体怎样的实现方法? 如何把excel表格中公式的值转换为数字 怎么把英文单词转换成ascii编码的字符串 如何将数字全部转换成汉字?asp里面涉及到金额的大小写的时候,如何把数字转换成大写的汉字?比如把1000元转换成壹仟元?