gpt4 book ai didi

JavaME MIDlet 不会清除变量吗?

转载 作者:行者123 更新时间:2023-12-02 07:56:46 25 4
gpt4 key购买 nike

我编写了一个 JavaME 程序,该程序访问 Web 服务以检索值,该 Web 服务在 tomcat 服务器上运行。

我面临一个非常奇怪的问题,每当我运行程序时,程序都会像我预期的那样下载新值,但它似乎存储了以前的数组值并添加它们,而不是将它们添加到统一的数组中。也许代码会更好地解释它。

我首先创建一个字符串数组来存储检索到的值和一个小的 int 值以在循环它们时使用,我还为服务和 stub 创建存储:

public class StockQuery extends MIDlet implements CommandListener
{
String[] newResults = null;
int i = 0;
String stockSym = null;
getDataService service = null;
.....

然后,当 startApp() 方法运行时,midlet 会调用一个表单,这可以在文本框中输入一个值,然后按发送命令将该值发送到服务器,该服务器将发回一个值数组(准确地说是 18 个)。为了实现这一点,我然后调用 commandAction() 方法。

public void commandAction(Command c, Displayable d)
{
else if(c == cmdSend)
{
stockSym = getSym.getString();
service = new getDataService_Stub();
try
{
newResults = service.getStock(stockSym);
for(i=0; i<newResults.length; i++)
{
System.out.println("Data " + i + " - " + newResults[i]);
}
}
catch (RemoteException ex)
{
ex.printStackTrace();
}

现在程序应该下载 18 个值并将其放入字符串数组中并循环遍历它们。它确实做到了这一点,但由于我不太明白的原因,它不会刷新数组中以前的值。

例如,我第一次执行循环时,程序确实循环并打印了 18 个值,但是第二次,它打印了上次运行的初始 18 个值,然后打印了刚刚下载的额外 18 个值。我已经关闭了 IDE,重新启动了 PC 并删除了 Netbeans 缓存文件夹,由于某种原因,它总是将值存储在字符串数组和循环值中,即使我在程序启动时将其声明为 0。

我现在正在运行该程序第 15 次,程序输出为:

 Data 267    -    34092040
Data 268 - 22.73 - 31.58
Data 269 - NasdaqNM
Data 270 - 1.95

谁能解释一下为什么变量没有被清除?

最佳答案

问题似乎出在 getDataService_Stub.getStock 方法中。它可能正在使用本地设备持久性来存储以前的服务器数据。请看一下。

关于JavaME MIDlet 不会清除变量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4662313/

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