[英]Parsing Java String type Error
我正在嘗試做的是結合接口方法來完成給定字符串內部變量的任務。 給我的字符串“ s”可以由數字,+,-和*符號組成。 整數返回相當容易,因為我正在做的就是返回該int的整數接口方法。 但是,對於其他3個符號,我需要遞歸地合並一種方法來查找左右節點。 我已經在下面發布了我的代碼...
public static Expression parseString( String s ) {
String[] parse = s.split("\\s+");
String[] parsecopy;
Expression exp1;
Expression exp2;
if(s == null) {
return null;
}
if(parse[0].equals("+")) {
exp1 = parseString(parse[0]);
parsecopy = Arrays.copyOfRange(parse, 2, parse.length);
exp2 = parseString(parsecopy);
return new AddExpression(exp1, exp2);
}
else if() {
問題-因此,我的代碼創建了原始字符串的副本以查找該字符串中的下一個項目。 我通過使用Array函數copyOfRange()來完成此操作。 但是,當我想調用exp2 = parseString(parsecopy)時,我收到一個錯誤,因為parseString接受必須為String []類型的字符串參數。 我嘗試獲取parsecopy而不是parsecopy [0]的原因是因為parsecopy不會創建無限循環,並且我實際上能夠遍歷字符串。
Error code - The method parseString(String) in the type Parse is not applicable for the arguments (String[])
if(parse[0].equals("+")) {
exp1 = parseString(parse[0]);
parsecopy = Arrays.copyOfRange(parse, 2, parse.length);
exp2 = parseString(parsecopy);
return new AddExpression(exp1, exp2);
}
exp1 = parseString(parse [0]);
您正在此處進行遞歸調用。
由於傳遞給split的參數是一個正則表達式,因此您可以簡單地執行以下操作:
String[] ss = "12121+34234 *23423 -123123 *123123-12312+1231231-123123".split("\\s?[\\+\\-\\*]\\s?");
這樣,您就可以在有+,-或*的位置(可能在空格之前或之后使用空格)分割字符串。
並且請在拆分之前對字符串進行空檢查:D
希望能幫助到你。
似乎您想檢查parse [1]是否等於“ +”,而不是parse [0]。 您會期望1 + 2而不是+ 1 2。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.