JavaME MIDlet不会清除变量?

时间:2011-01-11 20:32:24

标签: java java-me wsdl jax-ws midp

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

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

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

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

midlet然后在startApp()方法运行时调用表单,这允许输入一个值到文本框中,然后按send命令将值发送到服务器,此服务器将发回一个值数组(准确地说是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

有人可以解释为什么变量没有被清除吗?

1 个答案:

答案 0 :(得分:0)

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