Mobile 在J2ME中从文本字段解析int或double
我在JavaME中有两个文本字段,我正在尝试创建第三个字段,它将计算用户将输入的前两个文本字段的总数。我知道我应该首先将前两个文本字段转换为Int值。然后将它们设置为要添加并显示在第三个文本字段中的变量 但是我在下面使用的代码会收到错误消息,还有其他方法吗Mobile 在J2ME中从文本字段解析int或double,mobile,java-me,midp,lcdui,Mobile,Java Me,Midp,Lcdui,我在JavaME中有两个文本字段,我正在尝试创建第三个字段,它将计算用户将输入的前两个文本字段的总数。我知道我应该首先将前两个文本字段转换为Int值。然后将它们设置为要添加并显示在第三个文本字段中的变量 但是我在下面使用的代码会收到错误消息,还有其他方法吗 public firstMIDlet() { d = Display.getDisplay(this); muaj1 = new TextField("0-11 muaj", "", 6, TextField.ANY);
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);
}
因为文本字段中需要整数,所以不要使用
textField。任何在所有三个文本字段中使用textField.NUMERIC
。这将限制用户只输入数字。但是,您可以向第三个textFieldtotali.setConstraints(textField.UNEDITABLE)添加约束代码>
此外,阅读以熟悉j2me。因为文本字段中需要整数,所以不要使用textField。任何在所有三个文本字段中使用textField.NUMERIC
。这将限制用户只输入数字。但是,您可以向第三个textFieldtotali.setConstraints(textField.UNEDITABLE)添加约束代码>
此外,请阅读以熟悉j2me。您应该发布您遇到的错误以及发生的位置。
所以可能
如果返回的值为“”(这是您的情况),则无法将其转换为整数并返回NumberFormatException
如果要将其解析为整数,则应使用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();
}
在哪里
将转换为字符串。您也可以使用
Integer.toString(m1Int + m2Int)
你应该公布你犯了什么错误以及在哪里。
所以可能
如果返回的值为“”(这是您的情况),则无法将其转换为整数并返回NumberFormatException
如果要将其解析为整数,则应使用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();
}
在哪里
将转换为字符串。您也可以使用
Integer.toString(m1Int + m2Int)
谢谢各位
通过使用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) + "");
}
谢谢各位
通过使用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) + "");
}