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:错误:';'预期 private String decode(char c){ ^
PhoneNumber.java:46:错误:';'预期 private String decode(char c){ ^
PhoneNumber.java:60:错误:非法开始表达 public boolean equals(PhoneNumber pn){ ^
PhoneNumber.java:60:错误:';'预期 public boolean equals(PhoneNumber pn){ ^
PhoneNumber.java:60:错误:';'预期 public boolean equals(PhoneNumber pn){ ^
PhoneNumber.java:63:错误:非法开始表达 public String toString(){ ^
PhoneNumber.java:63:错误:';'预期 public String toString(){ ^
PhoneNumber.java:64:错误:')'预计 String number4 = new String.valueOf(PhoneNumber pn); ^
PhoneNumber.java:64:错误:非法开始表达 String number4 = new String.valueOf(PhoneNumber pn); ^
我从大约30个错误中得到了它,但我不确定如何解决“非法启动表达”错误。如果你看到代码有什么问题,一般可以随意指出。 感谢
答案 0 :(得分:1)
此代码存在许多问题,但我会尝试命名问题。 将其粘贴到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()
方法。毕竟,我认为你的代码应该编译。
附录:请详细格式化您的代码。它很难读懂。作为一个积极的副作用,你会发现问题,这会引起你提到的错误。
答案 1 :(得分:0)
您的代码有多个问题,如错误消息所示。以下是其中一些没有特别的顺序:
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)char
和Character
都没有定义matches(...)
方法。如果要检查字符是数字还是数字,可以使用
Character.isDigit(char)
Character.isLetter(char)
Character.isLetterOrDigit(char)
Character.isUpperCase(char)
...
5)Interger
拼写为Integer
这里可能还有很多问题很难找到,因为你的代码甚至没有编译,但这应该可以让你开始。
另外,我建议您正确格式化代码。这样就可以更容易地找到丢失的括号和其他如此微不足道的错误。您还可以使用Eclipse,Netbeans或IntelliJ等IDE来帮助您在编写代码时调试代码。所有这些IDE都有一个可能对您有帮助的自动代码格式化工具。