字符串彼此不相等

时间:2013-11-26 12:19:59

标签: java string while-loop

该程序将从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'};
    }
}

2 个答案:

答案 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'?