0

これは、Java で文字列を使用して電話番号を分析する課題です。私が抱えているエラーは、tester=invalidCharacters(c); 以下のものです。tester=invalidCharacters(c); を超えるすべての行のため、コンパイルされません。シンボルまたはクラスを探しています。get invalidResults では、*、(、^、&、%、@、#、) などのアルファベット以外の文字について特定の文字列を評価するだけです。

回答: エラーが発生する理由、何が機能するのか、正規表現を使用しない簡単な方法はありますか。

課題へのリンクは次のとおりです: http://cis.csuohio.edu/~hwang/teaching/cis260/assignments/assignment9.html

public class PhoneNumber {
            private int areacode;
            private int number;
            private int ext;

            /////Constructors/////
            //Third Constructor (given one string arg) "xxx-xxxxxxx" where first three are numbers and the remaining (7) are numbers or letters
            public PhoneNumber(String newNumber){
                    //Note: Set default ext to 0
                    ext=0;

                    ////Declare Temporary Storage and other variables////
                    //for the first three numbers
                    String areaCodeString;
                    //for the remaining seven characters
                    String newNumberString;
                    //For use in testing the second half of the string
                    boolean containsLetters;
                    boolean containsInvalid;

                    /////Separate the two parts of string/////
                    //Get the area code part of the string
                    areaCodeString=newNumber.substring(0,2);
                    //Convert the string and set it to the area code
                    areacode=Integer.parseInt(areaCodeString);

                    //Skip the "-" and Get the remaining part of the string
                    newNumberString=newNumber.substring(4);

                    //Create an array of characters from newNumberString to reuse in later methods for
                    int length=newNumberString.length();
                    char [] myCharacters= new char [length];
                    int i;
                    for (i=0;i<length;i++){
                        myCharacters [i]=newNumberString.charAt(i);
                    }

                    //Test if newNumberString contains letters & converting them into numbers
                    String reNewNumber="";
                    //Test for invalid characters
                    containsInvalid=getInvalidResults(newNumberString,length);
                    if (containsInvalid==false){
                        containsLetters=getCharResults(newNumberString,length);
                        if (containsLetters==true){
                            for (i=0;i<length;i++){
                            myCharacters [i]=(char)convertLetNum((myCharacters [i]));
                            reNewNumber=reNewNumber+myCharacters[i];
                            }
                        }
                    }
                    if (containsInvalid==false){
                    number=Integer.parseInt(reNewNumber);
                    }
                    else{
                        System.out.println("Error!"+"\t"+newNumber+" contains illegal characters. This number will be ignored and skipped.");
                    }
            }

            //////Primary Methods/Behaviors///////
            //Compare this phone number with the one passed by the caller
            public boolean equals(PhoneNumber pn){
                boolean equal;
                String concat=(areacode+"-"+number);
                String pN=pn.toString();
                if (concat==pN){
                    equal=true;
                }
                else{
                    equal=false;
                }
                return equal;
            }
            //Convert the stored number to a certain string depending on extension
            public String toString(){
                String returned;
                if(ext==0){
                    returned=(areacode+"-"+number);
                }
                else{
                    returned=(areacode+"-"+number+" ext "+ext);
                }
                return returned;
            }

            //////Secondary Methods///////
            //Method for testing if the second part of the string contains any letters
            public static boolean getCharResults(String newNumString,int getLength){
                //Recreate a character array
                int i;
                char [] myCharacters= new char [getLength];
                for (i=0;i<getLength;i++){
                    myCharacters [i]=newNumString.charAt(i);
                }
                boolean doesContainLetter=false;
                int j;
                for (j=0;j<getLength;j++){
                if ((Character.isDigit(myCharacters[j])==true)){
                    doesContainLetter=false;
                }
                else{
                    doesContainLetter=true;
                    return doesContainLetter;
                }
                }
                return doesContainLetter;
            }
            //Method for testing if the second part of the string contains any letters
            public static boolean getInvalidResults(String newNumString,int getLength){
                boolean doesContainInvalid=false;
                int i;
                char c;
                boolean tester;
                char [] invalidCharacters= new char [getLength];
                for (i=0;i<getLength;i++){
                    invalidCharacters [i]=newNumString.charAt(i);
                    c=invalidCharacters [i];
                    tester=invalidCharacters(c);
                    if(tester==true)){
                        doesContainInvalid=false;
                    }
                    else{
                        doesContainInvalid=true;
                        return doesContainInvalid;
                    }
                }
                    return doesContainInvalid;
            }

            //Method for evaluating string for invalid characters
            public boolean invalidCharacters(char letter){
                boolean returnNum=false;
                    switch (letter){
                        case 'A': return returnNum;
                        case 'B': return returnNum;
                        case 'C': return returnNum;
                        case 'D': return returnNum;
                        case 'E': return returnNum;
                        case 'F': return returnNum;
                        case 'G': return returnNum;
                        case 'H': return returnNum;
                        case 'I': return returnNum;
                        case 'J': return returnNum;
                        case 'K': return returnNum;
                        case 'L': return returnNum;
                        case 'M': return returnNum;
                        case 'N': return returnNum;
                        case 'O': return returnNum;
                        case 'P': return returnNum;
                        case 'Q': return returnNum;
                        case 'R': return returnNum;
                        case 'S': return returnNum;
                        case 'T': return returnNum;
                        case 'U': return returnNum;
                        case 'V': return returnNum;
                        case 'W': return returnNum;
                        case 'X': return returnNum;
                        case 'Y': return returnNum;
                        case 'Z': return returnNum;
                        default: return true;
                    }

            }
            //Method for converting letters to numbers
            public int convertLetNum(char letter){
                int returnNum;
                    switch (letter){
                        case 'A': returnNum=2;return returnNum;
                        case 'B': returnNum=2;return returnNum;
                        case 'C': returnNum=2;return returnNum;
                        case 'D': returnNum=3;return returnNum;
                        case 'E': returnNum=3;return returnNum;
                        case 'F': returnNum=3;return returnNum;
                        case 'G': returnNum=4;return returnNum;
                        case 'H': returnNum=4;return returnNum;
                        case 'I': returnNum=4;return returnNum;
                        case 'J': returnNum=5;return returnNum;
                        case 'K': returnNum=5;return returnNum;
                        case 'L': returnNum=5;return returnNum;
                        case 'M': returnNum=6;return returnNum;
                        case 'N': returnNum=6;return returnNum;
                        case 'O': returnNum=6;return returnNum;
                        case 'P': returnNum=7;return returnNum;
                        case 'Q': returnNum=7;return returnNum;
                        case 'R': returnNum=7;return returnNum;
                        case 'S': returnNum=7;return returnNum;
                        case 'T': returnNum=8;return returnNum;
                        case 'U': returnNum=8;return returnNum;
                        case 'V': returnNum=8;return returnNum;
                        case 'W': returnNum=9;return returnNum;
                        case 'X': returnNum=9;return returnNum;
                        case 'Y': returnNum=9;return returnNum;
                        case 'Z': returnNum=9;return returnNum;
                        default: return 0;
                    }

        }
    }

注: このプログラムを自分のクラスでカンニングに使用しないでください。これを確実にするために、2013 年末までに回答がない場合、説明が不要になった場合、またはクラスの期間が終了した場合は、この質問を取り下げます。

4

2 に答える 2