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