Java:找不到方法';s符号,即使该方法稍后在类中声明。剩下的代码正在寻找一个类。

Java:找不到方法';s符号,即使该方法稍后在类中声明。剩下的代码正在寻找一个类。,java,methods,boolean,character,symbols,Java,Methods,Boolean,Character,Symbols,这是一个任务,我们使用Java中的字符串来分析电话号码。 我遇到的错误是tester=invalidCharacters(c)以下的任何内容;不编译,因为每一行经过tester=invalidCharacters(c);正在查找符号或类。在get-invalidResults中,我所要做的就是计算给定字符串中的非字母字符,如*、(、^、&、%、@、#、)等 回答什么: 为什么它会产生错误,什么会起作用,还有没有一种不使用正则表达式的更简单的方法 以下是作业的链接: 公共类电话号码{ 私人国际区

这是一个任务,我们使用Java中的字符串来分析电话号码。 我遇到的错误是tester=invalidCharacters(c)以下的任何内容;不编译,因为每一行经过tester=invalidCharacters(c);正在查找符号或类。在get-invalidResults中,我所要做的就是计算给定字符串中的非字母字符,如*、(、^、&、%、@、#、)等

回答什么: 为什么它会产生错误,什么会起作用,还有没有一种不使用正则表达式的更简单的方法

以下是作业的链接:

公共类电话号码{
私人国际区号;
私有整数;
私有内文外文;
/////建设者/////
//第三个构造函数(给定一个字符串arg)“xxx-xxxxxxx”,其中前三个是数字,其余(7)是数字或字母
公用电话号码(字符串newNumber){
//注意:将默认扩展设置为0
ext=0;
////声明临时存储和其他变量////
//对于前三个数字
字符串区域编码字符串;
//对于剩余的七个字符
字符串newNumberString;
//用于测试字符串的后半部分
布尔容器选择器;
布尔包含无效;
/////把绳子的两部分分开/////
//获取字符串的区号部分
areaCodeString=newNumber.子字符串(0,2);
//转换字符串并将其设置为区号
areacode=Integer.parseInt(areaCodeString);
//跳过“-”并获取字符串的剩余部分
newNumberString=newNumber.substring(4);
//从newNumberString创建一个字符数组,以便在以后的方法中重用
int length=newNumberString.length();
char[]myCharacters=新字符[长度];
int i;

对于(i=0;i
getInvalidResults
是一个试图调用非静态
invalidCharacters
方法的静态方法。这是不允许的,因为非静态方法需要类的实例。
invalidCharacters
在这种情况下应该是静态的。

实际上,这个过程比看起来容易得多。关键是使用构造函数、getCharResults()方法和switch语句是我的优势

对于建造商,任何低于续订编号声明的内容应如下所示:

int i;
containsLetters=getCharResults(newNumberString,length);
if (containsLetters==true){
    for (i=0;i<length;i++){
        //Resets area code to 0 if a character is invalid (aka !@#$%^&* and so on)
        if((Character.isLetterOrDigit(myCharacters [i]))==false){
            areacode=0;
        }
        //Converts every character to a number (stored as a character)
        myCharacters [i]=convertLetNum((myCharacters [i]));
        //Recreates the string in all-number format
        reNewNumber=reNewNumber+myCharacters[i];
            }
    }
    number=Integer.parseInt(reNewNumber);
}
                case '0': returnNum='0';return returnNum;
                case '1': returnNum='1';return returnNum;
                case '2': returnNum='2';return returnNum;
                case '3': returnNum='3';return returnNum;
                case '4': returnNum='4';return returnNum;
                case '5': returnNum='5';return returnNum;
                case '6': returnNum='6';return returnNum;
                case '7': returnNum='7';return returnNum;
                case '8': returnNum='8';return returnNum;
                case '9': returnNum='9';return returnNum;
其中returnNum返回一个字符类型为的数字

此外,我们添加案例来测试并返回已经是数字的字符,如下所示:

int i;
containsLetters=getCharResults(newNumberString,length);
if (containsLetters==true){
    for (i=0;i<length;i++){
        //Resets area code to 0 if a character is invalid (aka !@#$%^&* and so on)
        if((Character.isLetterOrDigit(myCharacters [i]))==false){
            areacode=0;
        }
        //Converts every character to a number (stored as a character)
        myCharacters [i]=convertLetNum((myCharacters [i]));
        //Recreates the string in all-number format
        reNewNumber=reNewNumber+myCharacters[i];
            }
    }
    number=Integer.parseInt(reNewNumber);
}
                case '0': returnNum='0';return returnNum;
                case '1': returnNum='1';return returnNum;
                case '2': returnNum='2';return returnNum;
                case '3': returnNum='3';return returnNum;
                case '4': returnNum='4';return returnNum;
                case '5': returnNum='5';return returnNum;
                case '6': returnNum='6';return returnNum;
                case '7': returnNum='7';return returnNum;
                case '8': returnNum='8';return returnNum;
                case '9': returnNum='9';return returnNum;
请注意,returnNum不是必需的,但“#”是必需的


任何附加代码都是多余和不必要的。如果在构造函数中正确设置,则生成的代码是完美的。

您不需要所有的
returnNum
语句。只需直接返回数字。此外,创建一个
Map
作为
最终静态
变量,并使用
Map.get
。invalidCharacters是该方法中的lso是char[]。
                case '0': returnNum='0';return returnNum;
                case '1': returnNum='1';return returnNum;
                case '2': returnNum='2';return returnNum;
                case '3': returnNum='3';return returnNum;
                case '4': returnNum='4';return returnNum;
                case '5': returnNum='5';return returnNum;
                case '6': returnNum='6';return returnNum;
                case '7': returnNum='7';return returnNum;
                case '8': returnNum='8';return returnNum;
                case '9': returnNum='9';return returnNum;