标志总是返回0到另一个类
问题描述:
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。如何声明标志,这样它会保存从价值观内部方法,也可以从其他类访问。/*如果有人需要更多的细节,请问我会添加更多的细节,我应该写什么,我的主要疑问是只知道我怎么能在另一个班级使用我的国旗,感谢您的耐心*/标志总是返回0到另一个类
答
的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
}
}
它可以帮助那些谁想要帮助你,更重要的是:它是一个伟大的调试工具。
进行操作可帮助您隔离问题,并专注于此。
就像在这种情况下一样:您可以看到问题不在标志的声明中,也没有改变其值,但可能与输入值有关。
欢迎来到SO。 TL; DR;请参阅[如何提问](https://stackoverflow.com/help/how-to-ask):“假装你正在和一位忙碌的同事谈话,并且必须用一句话来概括你的整个问题”。发布最短的代码来展示问题。请参阅:[mcve]。制作mcve也将帮助您调试和隔离问题。你可能会发现问题不在于'flag'的声明中,而是改变其值的逻辑。 – c0der
嗨,你能指出我可以如何改变标志值(仅供参考:我现在减少了代码) – Krishna
减少代码是好的,但它不会使它[mcve] – c0der