该程序将从telephones.txt文件中读取每个电话号码,并检查它是否可以翻译成words.txt文件中的一个或多个单词。该程序的输出将包含电话号码及其单词代表。 (假设文件中有单词和电话)
while(phones.hasNext())
{
number = phones.next();
number = number.replace("-","");
//Scans for next word string
System.out.print(number + " ");
Scanner words = new Scanner(new File("words.txt"));
while(words.hasNext())
{
code = words.next();
char[] wordChars = null;
wordChars = code.toCharArray();
output = "";
for(char wordChar : wordChars)
{
output = output.concat(new String(convert(wordChar)));
}
if(number.equals(output))
{
end += code;
System.out.print(code);
if(end.isEmpty() && end !=null)
{
System.out.print("NONE");
}
}
}
System.out.println();
}
}
假设文件中的单词是CBCNEWS,CTVNEWS,数字是2251493和2226397 如果(number.equals(输出)); { System.out.println(数字+“”+代码); } 只有在字符串数字等于字符串输入时才会打印此代码,而不是始终打印。我必须做什么条件,以便只有在满足条件时才打印,并且还会继续查找更多单词
我如何转换字符串代码是使用这个:
public static char[] convert(char c)
{
switch(c)
{
case 'A' :
case 'B' :
case 'C' :
return new char[]{'2'};
case 'D' :
case 'E' :
case 'F' :
return new char[]{'3'};
case 'G' :
case 'H' :
case 'I' :
return new char[]{'4'};
case 'J' :
case 'K' :
case 'L' :
return new char[]{'5'};
case 'M' :
case 'N' :
case 'O' :
return new char[]{'6'};
case 'P' :
case 'R' :
case 'S' :
return new char[]{'7'};
case 'T' :
case 'U' :
case 'V' :
return new char[]{'8'};
default:
return new char[]{'9'};
}
}
答案 0 :(得分:3)
if后的分号。
if(number.equals(output));
{
System.out.println(number + " " + code);
}
应该是:
if(number.equals(output))
{
System.out.println(number + " " + code);
}
答案 1 :(得分:0)
只是一个建议:您可以考虑通过更简单的ASCII函数或HashMap实现来更改冗长的转换方法实现,例如:
public static char[] convert(char c){
int check = (c - 'A');
if(check<3){ return new char[]{'2'};}
else if(check>2 && check<6){ return new char[]{'3'};}
else if(check>5 && check<9){ return new char[]{'4'};}
else if(check>8 && check<12){ return new char[]{'5'};}
else if(check>11 && check<15){ return new char[]{'6'};}
else if(check>14 && check<19){ return new char[]{'7'};}
else if(check>18 && check<22){ return new char[]{'8'};}
else{ return new char[]{'9'};}
}
您是否错过了案例char'7'的'Q'?