我在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);
}
答案 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) + "");
}