flag始终将0返回给另一个类

时间:2017-11-18 07:28:39

标签: java

import java.util.ArrayList;
import java.util.List;

public class QueryParser {
    QueryParameter queryParameter = new QueryParameter();
    public static int flag = 0;

    public QueryParameter parseQuery(String queryString) {
        queryParameter.setGroupByFields(getGroupByFields(queryString));

        queryParameter.setAggregateFunctions(getAggregateFunctions(queryString));

        return queryParameter;
    }

    private List<AggregateFunction> getAggregateFunctions(String queryString) {
        List<AggregateFunction> aggregateFunctionList = null;
        AggregateFunction aggregateFunction;
        if (queryString.contains("count") || queryString.contains("sum") || queryString.contains("min")
                || queryString.contains("max") || queryString.contains("avg")) {
            flag = flag + 1;
        }
        return aggregateFunctionList;
    }

    private List<String> getGroupByFields(String queryString) {
        List<String> groupByFieldList = null;
        if (queryString.contains("group by")) {
            flag = flag+2;
        return groupByFieldList;
    }
}

这是我的代码,现在我正在使用另一个类访问标志  int i = queryParser.flag, 但它总是返回0.如何声明标志,以便它保存内部方法的值,也可以从其他类访问。 / *如果有人需要更多细节,请问我会添加更多细节,我还应该写些什么,我的主要疑问只是知道如何在另一堂课中使用我的旗帜,谢谢你耐心* /

1 个答案:

答案 0 :(得分:-1)

MCVE可能如下所示:

public class QueryParser {

    public static int flag = 0;

    void getAggregateFunctions(String queryString) {

        if (queryString.contains("count") || queryString.contains("sum") || queryString.contains("min")
                || queryString.contains("max") || queryString.contains("avg")) {
            flag = flag + 1;
        }
    }

    void getGroupByFields(String queryString) {

        if (queryString.contains("group by")) {
            flag = flag+2;
        }
    }

    public static void main(String[] args) {

        QueryParser q = new QueryParser();
        System.out.println(flag); //prints out 0
        q.getAggregateFunctions("max"); System.out.println(flag); //prints out 1
        q.getAggregateFunctions("aString"); System.out.println(flag); //prints out 1
        q.getAggregateFunctions("avgNumber"); System.out.println(flag); //prints out 2
        q.getGroupByFields("group by"); System.out.println(flag); //prints out 4
    }
}

它可以帮助那些想要帮助你的人,更重要的是:它是一个很棒的调试工具。
Make on帮助您隔离问题,并专注于它。
就像在这种情况下:你可以看到问题不在flag的声明中,也没有改变它的值,但可能与输入值有关。