簡體   English   中英

解析Java字符串類型錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM