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 回答
这段代码有很多问题,但我会试着说出问题的名称 . 将其粘贴到Eclipse中后,很容易看到所有错误 .
首先,您的方法调用写错了:
注意:请尝试以下操作:
此外,没有带char的String.concat():
第91行之后有一个
}
缺失,这在第157行中太多了 . 这就是你的illegal start of expression
来自的地方 .您还应该重做
toString()
方法 . 毕竟,我认为你的代码应该编译 .Addendum : 请您正确格式化您的代码 . 它很难读懂 . 作为一个积极的副作用,你会看到问题,这会引起你提到的错误 .
您的代码有多个问题,如错误消息所示 . 以下是其中一些没有特别的顺序:
1)构造函数
PhoneNumber(String newnumber)
没有用大括号}
关闭,它应该在行之后的某个地方2)
String
没有公共成员length
. 而是使用方法length()
来获取字符串的长度 .3)
String
没有charAT(int)
方法 . 它拼写为charAt(int)
4)
char
和Character
都没有定义matches(...)
方法 . 如果要检查字符是数字还是数字,可以使用组合5)
Interger
应该拼写Integer
这里可能还有很多问题很难找到,因为你的代码甚至没有编译,但这应该让你开始 .
另外,我建议您正确格式化代码 . 这样就可以更容易地找到丢失的括号和其他如此微不足道的错误 . 您还可以使用Eclipse,Netbeans或IntelliJ等IDE来帮助您在编写代码时调试代码 . 所有这些IDE还有一个可能对您有帮助的自动代码格式化工具 .