2014-04-01 29 views
-1

我必須將它保存在'A'格式中我只是不明白我應該在(char c)中擁有什麼,因爲這似乎是錯誤來自哪裏。如果有人有任何建議,將不勝感激。關於布爾型聲明的語法錯誤

public class PhoneNumber { 


private int areacode; 
private int number;  
private int ext;  

PhoneNumber() { 

areacode = 0; 
number = 0; 
ext = 0; 

} 

PhoneNumber(int newnumber) { 

areacode = 216; 

number = newnumber; 
ext = 0; 

} 

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

areacode = newarea; 
number = newnumber; 
ext = newext; 

} 


PhoneNumber(String newnumber) { 
String areacode = str[0]; 
String number = str[1]; 
String[] str = newnumber.split("-"); 
String[] number = newnumber; 

boolean b1, b2; 
int i = 0; 
int place = 0; 
for (int x: newnumber){ 
    newnumber.charAt[i] = place; 
    b1 = Character.isDigit(place); 
    if (b1 == true){ 
    number = place; 
    i++; 
} else { 
    b2 = Character.isLetter(place); 
} if (b2 == true) { 
    number = decode(place); 
    i++; 
} else { 
    System.out.print("invalid phone number!"); 
} 
} 

System.out.print(areacode.concat(number)); 
return newnumber; 
} 



private String decode(place) { 

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";  
    default: return "";  
    } 

} 


public boolean equals(PhoneNumber pn) { 
    //not complete 
} 


public String toString() { 
    //not complete 
} 



} 

以下是錯誤:

G:\CIS260\Assignments>javac PhoneNumber.java 
PhoneNumber.java:53: error: <identifier> expected 
private String decode(place) { 
         ^
1 error 
+3

布爾*什麼*等於b1和b2? 'boolean b0 = b1,b2'是一個正確的聲明;所以'boolean b1,b2'。 'boolean = ...'不是。 – Amadan

+0

這個問題似乎是離題,因爲用戶應該先嚐試跟着教程... – vanza

+0

所以你說它應該是布爾b1,b2而不是 – user3483201

回答

1

您有一個錯誤在我跳出。請注意,如果你有一個語法錯誤,大多數編譯器會嚇壞了,並將所有錯誤標記爲實際錯誤。調試偶然的語​​法錯誤,最好的辦法是看第一個錯誤:)

boolean = b1, b2; 

是沒有意義的。變量聲明如下

[Type] [Variable Name] | ,[Additional Vars]; 

所以它應該是boolean b1, b2;

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"; 

    default: return ""; 

    } 

} 

我建議你使用一個查找表(HashMap中)做這一套代碼,它看起來醜陋的要少得多,並且更易於眼睛痠痛。

這方面的一個例子是

private static final Map<Char, String> myDecodeLookup = new Hashmap<Char,String>(); 

static{ //initializer block 
    myDecodeLookup.put('A', "2"); 
    myDecodeLookup.put('B', "2"); 
    //and so and and so forth 
} 

private String decode(char c) throws KeyNotFoundException{ 
    return MyClassName.myDecodeLookup.get(c); //you should code this to support the keynotfoundexception that this might throw, or not. 
} 

如果你發現自己調試語法錯誤 5小時,你應該退後一步,並期待語法的語言結構本身。 ..這是很好的建議,可以繼續前進。

+1

的Java不支持落空的情況下switch語句,並在此簡單示例比Map有一些優點。 – cistearns

+0

@cistearns啊,固定感謝,實際上不知道,好,學到了一些東西。基於我從其他語言中瞭解到的切換貫通性的情況,這仍然是一種不好的做法,因爲閱讀不完全中斷的切換語句的行爲要困難得多。 – rpg711