首页 文章

处理编译错误“非法启动表达”

提问于
浏览
-5
public class PhoneNumber {

 private int areacode;

 private int number;

 private int ext;

 //intitialize data field


PhoneNumber() {

int areacode=0;

int number=0;

int ext=0;
//if no arguements are given set all identifiers to 0

}







PhoneNumber(int number) {

int areacode=0;

int ext=0;
//if number arguement is given initialize it caller value and set ext and areacode to 0
}



PhoneNumber(int newarea,int newnumber,int newext) {


//initialize all identifiers to value passed by caller
 }


PhoneNumber(String newnumber) {
//implement if caller provides String value

String str[]=newnumber.split("-");
//split string at point when - symbol is seen

str[0]=newnumber.substring(0,4);
//set str[0] to first 3 charchters of String

str[1]=newnumber.substring(5,12);
//set str[1] to last 6 charchters of string

int areacode=Interger.parseInt(str[0]);
//convert str[0] to interger and set value equal to areacode

String tempstring;
// creat string called tempstring

for (int i=0;i<str[1].length;i++) {
//if i is less than length of str[1] continue loop

if (str[1].charAT(i).matches("1"||"2"||"3"||"4"||"5"||"6"||"7"||

"8"||"9"||"0"||'A'||'B'||'C'||'D'||'E'||'F'||'H'||

'I'||'J'||'K'||'L'||'M'||'N'||'O'||'P'||'Q'||'R'||'S'||

'T'||'U'||'V'||'W'||'X'||'Y'||'Z'))
//if charchter identified at a point on str[1] is either a capital letter or digit go into if    statement
  {if (str[1].charAT(i).matches("1"||"2"||"3"||"4"||"5"||"6"||"7"||

   "8"||"9"||"0"))
  //(nested if statement)check to see if character i is a digit
  {tempstring=tempstring.concat(str[1].charAT(i));}
  //if i is a digit append it to end of tempstring

  else {tempstring=tempstring+decode(str[1].charAT(i));
    //if not invoke decode method then append to tempstring

   }}

   else {Sytem.out.println("error restart program with new input");}

   int number=Interger.parseInt(tempstring);
   //if charchter is not a letter or digit show error message
     }















 //method converts from letter to number

 private String decode(char c) {

 switch (c){

 case 'A': case 'B': case'C': return"2";

 case 'D': case 'E': case 'F': return"3";

 case 'G': case 'H': case 'I': return"4";

 case 'J': case 'K': case 'L': return"5";

 case 'M': case 'N': case 'O': return"6";

 case 'P': case 'Q': case 'R':case 'S': return"7";

 case 'T': case 'U': case'V': return"8";

 case 'W': case 'X': case'Y': case'Z': return"9";
 // given a certain capitial letter converts to number


 default: return"";
 //default value returns empty string

 }

 }



 public boolean equals(PhoneNumber pn) {
 //reade another phone number passed by called

 return this.areacode==pn.areacode && this.number==pn.number && this.ext==pn.ext;
 //if phonenumber is identical to previous number show true if not show false
 }



 public String toString() {
 //convert number to string

 String number4=new String.valueOf(PhoneNumber pn);

 String newnumber[]=number4.split("-");


 }

 }

 }

错误:PhoneNumber.java:46:错误:非法启动表达式private String decode(char c){^

PhoneNumber.java:46:错误:';'预期的私有字符串解码(char c){^

PhoneNumber.java:46:错误:';'预期的私有字符串解码(char c){^

PhoneNumber.java:60:错误:非法启动表达式public boolean equals(PhoneNumber pn){^

PhoneNumber.java:60:错误:';'期望的公共布尔值等于(PhoneNumber pn){^

PhoneNumber.java:60:错误:';'期望的公共布尔值等于(PhoneNumber pn){^

PhoneNumber.java:63:错误:非法启动表达式public String toString(){^

PhoneNumber.java:63:错误:';'期望公共String toString(){^

PhoneNumber.java:64:错误:')'期望字符串number4 = new String.valueOf(PhoneNumber pn); ^

PhoneNumber.java:64:错误:表达式的非法启动字符串number4 = new String.valueOf(PhoneNumber pn); ^

我从大约30个错误中得到了它,但我不确定如何解决“非法启动表达”错误 . 如果你看到代码有什么问题,一般可以随意指出 . 谢谢

2 回答

  • 0

    这段代码有很多问题,但我会试着说出问题的名称 . 将其粘贴到Eclipse中后,很容易看到所有错误 .

    首先,您的方法调用写错了:

    Error                            Correction
    
    Lines 58, 89: Interger.parseInt(str[0]);  -->  Integer.parseInt(str[0]);
    
    Line  64: str[1].length                   -->  str[1].length()
    
    Lines 67, 75, 79, 82:
              charAT                          -->  charAt
    
    Lines 67, 75:
              charAt(i).matches               -->  charAt(i) == '1' || charAt(i) == '2' || ... (not recommended)
    

    注意:请尝试以下操作:

    char c = str[1].charAt(i);
    boolean b = Character.isLetter(c) && Character.isUpperCase(c) || Character.isDigit(c);
    if(b) { ... }
    

    此外,没有带char的String.concat():

    Line 79: tempstring=tempstring.concat(str[1].charAt(i));  -->  tempstring += str[1].charAt(i)
    
    Line 87: Sytem.out.println               -->  System.out.println
    

    第91行之后有一个 } 缺失,这在第157行中太多了 . 这就是你的 illegal start of expression 来自的地方 .

    您还应该重做 toString() 方法 . 毕竟,我认为你的代码应该编译 .

    Addendum : 请您正确格式化您的代码 . 它很难读懂 . 作为一个积极的副作用,你会看到问题,这会引起你提到的错误 .

  • 1

    您的代码有多个问题,如错误消息所示 . 以下是其中一些没有特别的顺序:

    1)构造函数 PhoneNumber(String newnumber) 没有用大括号 } 关闭,它应该在行之后的某个地方

    //if charchter is not a letter or digit show error message
     }
    

    2) String 没有公共成员 length . 而是使用方法 length() 来获取字符串的长度 .

    3) String 没有 charAT(int) 方法 . 它拼写为 charAt(int)

    4) charCharacter 都没有定义 matches(...) 方法 . 如果要检查字符是数字还是数字,可以使用组合

    Character.isDigit(char)
    Character.isLetter(char)
    Character.isLetterOrDigit(char)
    Character.isUpperCase(char)
    ...
    

    5) Interger 应该拼写 Integer

    这里可能还有很多问题很难找到,因为你的代码甚至没有编译,但这应该让你开始 .

    另外,我建议您正确格式化代码 . 这样就可以更容易地找到丢失的括号和其他如此微不足道的错误 . 您还可以使用Eclipse,Netbeans或IntelliJ等IDE来帮助您在编写代码时调试代码 . 所有这些IDE还有一个可能对您有帮助的自动代码格式化工具 .

相关问题