从J2ME中的文本字段解析int或double

时间:2012-05-07 07:57:32

标签: mobile java-me midp lcdui

我在Java ME中有两个文本字段,我尝试创建第三个字段将计算用户输入的前两个文本字段的总和。我知道我会先将前两个文本字段转换为Int值。然后将它们设置为变量以添加并显示在第三个文本字段中。

但是我使用下面的代码我会收到错误消息,还有另一种方法吗?

public firstMIDlet()
{
    d = Display.getDisplay(this);

    muaj1 = new TextField("0-11 muaj", "", 6, TextField.ANY);
    int m1Int = Integer.parseInt(TextField.getString());

    muaj2 = new TextField("12-23 muaj", "", 6, TextField.ANY);
    int m2Int = Integer.parseInt(TextField.getString());

    totali = new TextField("TOTALI", "", 7, TextField.ANY);
}

3 个答案:

答案 0 :(得分:3)

你应该发布你得到的错误和地点。 所以可能......

如果返回的值是“”(这是你的情况),那么它不能将它转换为Integer并返回NumberFormatException。

如果要将其解析为Integer,则应使用TextField.NUMERIC。

此外,您可能需要启动一个动态计算第三个字段值的线程。

每当调用TextField.getString()时都会出错,因为它不是静态方法,并且无法知道它应该从哪个TextField获取它。

所以,你需要做这样的事情:

    private Form f;
    public firstMIDlet() {
        d = Display.getDisplay(this);
        f = new Form("myform);
        muaj1 = new TextField("0-11 muaj","",6,TextField.NUMERIC);
        muaj2 = new TextField("12-23 muaj","",6,TextField.NUMERIC);
        totali = new TextField("TOTALI","",7,TextField.NUMERIC | TextField.UNEDITABLE);
        myform.append(muaj1);
        myform.append(muaj2);
        myform.append(totali);
        startUpdating();
    }

    public void startApp() {
        d.setCurrent(form);
    }

    public void startUpdating() {
        new Thread () {
            public void run() {
                try {
                    int m1Int = Integer.parseInt(muaj1.getString());
                    int m2Int = Integer.parseInt(muaj2.getString());
                    totali.setString((m1Int + m2Int) + "");
                }
                catch (NumberFormatExeption nfe) {}
            }
        }.start();
    }

,其中

    "" + someInt

将转换为String。你也可以使用

    Integer.toString(m1Int + m2Int)

答案 1 :(得分:1)

由于你需要textField中的整数,所以在所有三个textField中使用TextField.ANY而不是TextField.NUMERIC。这将限制用户仅输入数字。但是,您可以向第三个textField totali.setConstraints(TextField.UNEDITABLE);

添加约束

另外阅读documentation以熟悉j2me。

答案 2 :(得分:0)

谢谢你们,

通过使用TextField.NUMERIC并创建一个新的计算函数,我已经完成了计算

 public void calc() {
    int a1=0, a2=0, a3=0, a4=0, res=0;
    a1 = Integer.parseInt(muaj1.getString());
    a2 = Integer.parseInt(muaj2.getString());
    a3 = Integer.parseInt(muaj3.getString());
    a4 = Integer.parseInt(muaj4.getString());
    totali.setText((a1 + a2 + a3 + a4) + "");
   }