Java 方法不返回字符串
Java method not returning string
public static void searchLabel(String word) {
String uri = null;
String sparqlQueryString1 = sparqlQuerySetup + "SELECT * WHERE {?x uni:altLabel \"" + word + "\"^^xsd:string}";
System.out.println(sparqlQueryString1);
executeQuery(sparqlQueryString1);
System.out.println(uri);
getType(uri);
}
public static String executeQuery(String sparqlQuerystring1){
String uri = null;
Query query = QueryFactory.create(sparqlQuerystring1);
QueryExecution qexec = QueryExecutionFactory.create(query, model);
ResultSet results = qexec.execSelect();
//ORGINEEL ResultSetFormatter.out(System.out, results, query);
//ALS RDF ResultSetFormatter.outputAsRDF("", results);
// ResultSetFormatter.outputAsJSON(results);
if (results.hasNext()) {
uri = results.next().get("x").toString();
}
qexec.close() ;
System.out.println(uri);
return uri;
}
在第一种方法中,我正在执行 executeQuery。在 executeQuery 中,我尝试 return "uri" 并在 searchLabel 方法中再次打印它,但它 returns "null"。它正在打印 executeQuery 方法,就在 returning uri 之前。
我猜这与我在 searchLabel 方法中将 uri 定义为 null 这一事实有关。但是,如果我删除它,我将无法执行脚本(uri 无法解析为变量)
uri = executeQuery(sparqlQueryString1);
在第一种方法中你...
- 声明
uri
并用 null
初始化它。
- 创建查询字符串
- 打印出来
- 通过第二种方法执行查询,这可能会或可能不会 return 结果不是
null
- 打印出
uri
,它仍然是 null,因为你从未给它赋值
- 调用
getType( null )
,因为uri还是null
因此,假设您的第二种方法实际上 return 是一个结果,您必须将 return 值分配给第一种方法中的 uri
变量。请记住,第一个方法中的变量 uri 与第二个方法中的变量 uri
无关。他们只是碰巧有相同的名字,但他们既不相关也不相同。
您应该将 return 从 executeQuery
分配给 uri
变量...
String uri = null;
String sparqlQueryString1 = sparqlQuerySetup + "SELECT * WHERE {?x uni:altLabel \"" + word + "\"^^xsd:string}";
System.out.println(sparqlQueryString1);
uri = executeQuery(sparqlQueryString1);
System.out.println(uri);
public static void searchLabel(String word) {
String uri = null;
String sparqlQueryString1 = sparqlQuerySetup + "SELECT * WHERE {?x uni:altLabel \"" + word + "\"^^xsd:string}";
System.out.println(sparqlQueryString1);
executeQuery(sparqlQueryString1);
System.out.println(uri);
getType(uri);
}
public static String executeQuery(String sparqlQuerystring1){
String uri = null;
Query query = QueryFactory.create(sparqlQuerystring1);
QueryExecution qexec = QueryExecutionFactory.create(query, model);
ResultSet results = qexec.execSelect();
//ORGINEEL ResultSetFormatter.out(System.out, results, query);
//ALS RDF ResultSetFormatter.outputAsRDF("", results);
// ResultSetFormatter.outputAsJSON(results);
if (results.hasNext()) {
uri = results.next().get("x").toString();
}
qexec.close() ;
System.out.println(uri);
return uri;
}
在第一种方法中,我正在执行 executeQuery。在 executeQuery 中,我尝试 return "uri" 并在 searchLabel 方法中再次打印它,但它 returns "null"。它正在打印 executeQuery 方法,就在 returning uri 之前。
我猜这与我在 searchLabel 方法中将 uri 定义为 null 这一事实有关。但是,如果我删除它,我将无法执行脚本(uri 无法解析为变量)
uri = executeQuery(sparqlQueryString1);
在第一种方法中你...
- 声明
uri
并用null
初始化它。 - 创建查询字符串
- 打印出来
- 通过第二种方法执行查询,这可能会或可能不会 return 结果不是
null
- 打印出
uri
,它仍然是 null,因为你从未给它赋值 - 调用
getType( null )
,因为uri还是null
因此,假设您的第二种方法实际上 return 是一个结果,您必须将 return 值分配给第一种方法中的 uri
变量。请记住,第一个方法中的变量 uri 与第二个方法中的变量 uri
无关。他们只是碰巧有相同的名字,但他们既不相关也不相同。
您应该将 return 从 executeQuery
分配给 uri
变量...
String uri = null;
String sparqlQueryString1 = sparqlQuerySetup + "SELECT * WHERE {?x uni:altLabel \"" + word + "\"^^xsd:string}";
System.out.println(sparqlQueryString1);
uri = executeQuery(sparqlQueryString1);
System.out.println(uri);