gpt4 book ai didi

java - WolframAlpha API 在 Android 中抛出异常,但在控制台中不抛出异常

转载 作者:行者123 更新时间:2023-12-01 23:42:46 29 4
gpt4 key购买 nike

我正在构建一个简单的计算器,我想使用经过验证的计算器 WolframAlpha 验证我的计算,但我遇到了一些一致性问题。我编写此程序是为了了解有关 Android、Java 和 XML 的更多信息。大部分代码直接取自 WolframAlphaSample.java 文件,并简化为仅返回我们需要的“pod”(信息)。

在我的 ActivityMain.java 中,我传递了我的 editText 函数:

Double wolframAnswer = WolframAlpha.queryInput(editLine.getText().toString());

在 WolframAlpha.queryInput() 中,我的代码如下所示:

    public static double queryInput(String input)
{
WAEngine engine = new WAEngine();
System.out.println("Wolfram Input: " + input);
// These properties will be set in all the WAQuery objects created from this WAEngine.
engine.setAppID(appid);
engine.addFormat("plaintext");
engine.addIncludePodID("DecimalApproximation");
engine.addIncludePodID("Result");
WAQuery query = engine.createQuery(); // Create the query.
query.setInput(input); // Sets property of the query.
double finalResult = 0.0;
try {
// This sends the URL to the Wolfram|Alpha server, gets the XML result
// and parses it into an object hierarchy held by the WAQueryResult object.
WAQueryResult queryResult = engine.performQuery(query);
//System.out.println(((WAPlainText)(queryResult.getPods()[0].getSubpods()[0].getContents()[0])).getText());
String unroundedResult;

if (queryResult.isError())
{
return 1.0; // error
}
else if (!queryResult.isSuccess())
{
return 2.0; // misunderstood
}
else if(queryResult.getPods().length == 1)
{
unroundedResult = ((WAPlainText)(queryResult.getPods()[0].getSubpods()[0].getContents()[0])).getText();
if (unroundedResult.endsWith("...")) // Remove trailing dots if really long number
{
unroundedResult = unroundedResult.replaceAll("\\.\\.\\.", "");
}
}
else
{
unroundedResult = ((WAPlainText)(queryResult.getPods()[1].getSubpods()[0].getContents()[0])).getText();
}
finalResult = Double.parseDouble(unroundedResult);
} catch (WAException e) {
e.printStackTrace();
}
return finalResult;
}
}

当我们使用简单的查询(5+8)从 WolframAlpha.java 中的控制台运行它时,它工作得很好,如果我们从 Android 应用程序运行它,它传递完全相同的数据,它会捕获并抛出异常。知道为什么我们会看到两种不同的行为吗?

小提示:返回 1.0 和 2.0 不是最好的主意,但被抛出是因为我不确定如何返回不是 double 的错误,而且我想调试正在发生的事情,事实证明无论如何它并没有走那条路,但我把它留在这里。

最佳答案

LogCat 可能是您最好的 friend 。可能与android运行时有关,调用异步任务来处理HTTP请求。

关于java - WolframAlpha API 在 Android 中抛出异常,但在控制台中不抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17662987/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com