在 java 中留下一个空白的 jtextfield 字段
leave a blank jtextfield field in java
我有这个错误:
Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: ""
at Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:592)
at java.lang.Integer.parseInt(Integer.java:615)
at sunat.calculadora.btnCalcularActionPerformed(calculadora.java:234)
at sunat.calculadora.access0(calculadora.java:14)
at sunat.calculadora.actionPerformed(calculadora.java:109)
at
我的代码:
private void btnCalcularActionPerformed(java.awt.event.ActionEvent evt) {
int sueldo,gratificaciones;
int renumeracion_bruta_anual;
int horas_extras,meses_pendientes;
int renumeracion_neta_anual;
double impuesto_anual_proyectado;
int asignacion_familiar;
horas_extras=0;
sueldo=Integer.parseInt(txtsueldo.getText());
horas_extras = Integer.parseInt(txthorasextras.getText());
meses_pendientes=Integer.parseInt(txtmesespendientes.getText());
gratificaciones=Integer.parseInt(txtgratificacion.getText());
asignacion_familiar=Integer.parseInt(txtasignacionfamiliar.getText());
renumeracion_bruta_anual=sueldo*meses_pendientes+gratificaciones+horas_extras+asignacion_familiar;
renumeracion_neta_anual=renumeracion_bruta_anual-29400;
if (renumeracion_neta_anual<1){
JOptionPane.showMessageDialog (null, "Usted no paga impuesto");
}
if (renumeracion_neta_anual <= 21000 && renumeracion_neta_anual>=1) {
impuesto_anual_proyectado=renumeracion_neta_anual*0.08;
txtcalculo.setText(String.format("%.2f", impuesto_anual_proyectado));
} else if (renumeracion_neta_anual > 21000 && renumeracion_neta_anual<=84000) {
impuesto_anual_proyectado=renumeracion_neta_anual *0.14;
txtcalculo.setText(String.format("%.2f", impuesto_anual_proyectado));
} else if (renumeracion_neta_anual > 84000 && renumeracion_neta_anual<=147000) {
impuesto_anual_proyectado=renumeracion_neta_anual *0.17;
txtcalculo.setText(String.format("%.2f", impuesto_anual_proyectado));
} else if (renumeracion_neta_anual >147000 && renumeracion_neta_anual<=18900) {
impuesto_anual_proyectado=renumeracion_neta_anual *0.20;
txtcalculo.setText(String.format("%.2f", impuesto_anual_proyectado));
} else if (renumeracion_neta_anual >18900) {
impuesto_anual_proyectado=renumeracion_neta_anual *0.30;
txtcalculo.setText(String.format("%.2f", impuesto_anual_proyectado));
}
}
如您所见,字段 hours_extras 被声明为整数,但此时将字段 hours_extras 留空,它变为字符串,并且不执行给出上述错误的数学运算。有一些方法可以在不在 jtexfield 中写任何东西的情况下放手
因为我必须将该字段留空并在不需要时计算没有它的最终金额。谢谢你的回答。
如果您必须将空字符串作为特殊情况处理,并且希望乱码输入仍然抛出异常,您可以执行类似以下操作:
String extraHourString = txthorasextras.getText();
if(extraHourString.isEmpty()) { //alternatively, if(extraHourString.equals("")) {
... //handle the text being empty, or set a boolean flag so that you can handle it later
}
else { // we know the provided text is not empty now
//will still crash on gibberish inputs, but the empty string "" will never reach here
horas_extras = Integer.parseInt(extraHourString);
}
或者,如果您想完全忽略空字符串(将 horas_extras
保留为默认值),您可以执行如下操作:
int horas_extras = DEFAULT_VALUE; //declaration sets the default (could be any integer)
...
if(!txthorasextras.getText().equals("")) { //or, if(!txthorasextras.getText().isEmpty()) {
horas_extras = Integer.parseInt(txthorasextras.getText());
}
如果输入字符串为空,这将忽略对 horas_extras
的赋值,这将保留 horas_extras
(DEFAULT_VALUE
) 的当前值。请注意,乱码输入仍然像以前一样抛出异常。
我有这个错误:
Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: ""
at Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:592)
at java.lang.Integer.parseInt(Integer.java:615)
at sunat.calculadora.btnCalcularActionPerformed(calculadora.java:234)
at sunat.calculadora.access0(calculadora.java:14)
at sunat.calculadora.actionPerformed(calculadora.java:109)
at
我的代码:
private void btnCalcularActionPerformed(java.awt.event.ActionEvent evt) {
int sueldo,gratificaciones;
int renumeracion_bruta_anual;
int horas_extras,meses_pendientes;
int renumeracion_neta_anual;
double impuesto_anual_proyectado;
int asignacion_familiar;
horas_extras=0;
sueldo=Integer.parseInt(txtsueldo.getText());
horas_extras = Integer.parseInt(txthorasextras.getText());
meses_pendientes=Integer.parseInt(txtmesespendientes.getText());
gratificaciones=Integer.parseInt(txtgratificacion.getText());
asignacion_familiar=Integer.parseInt(txtasignacionfamiliar.getText());
renumeracion_bruta_anual=sueldo*meses_pendientes+gratificaciones+horas_extras+asignacion_familiar;
renumeracion_neta_anual=renumeracion_bruta_anual-29400;
if (renumeracion_neta_anual<1){
JOptionPane.showMessageDialog (null, "Usted no paga impuesto");
}
if (renumeracion_neta_anual <= 21000 && renumeracion_neta_anual>=1) {
impuesto_anual_proyectado=renumeracion_neta_anual*0.08;
txtcalculo.setText(String.format("%.2f", impuesto_anual_proyectado));
} else if (renumeracion_neta_anual > 21000 && renumeracion_neta_anual<=84000) {
impuesto_anual_proyectado=renumeracion_neta_anual *0.14;
txtcalculo.setText(String.format("%.2f", impuesto_anual_proyectado));
} else if (renumeracion_neta_anual > 84000 && renumeracion_neta_anual<=147000) {
impuesto_anual_proyectado=renumeracion_neta_anual *0.17;
txtcalculo.setText(String.format("%.2f", impuesto_anual_proyectado));
} else if (renumeracion_neta_anual >147000 && renumeracion_neta_anual<=18900) {
impuesto_anual_proyectado=renumeracion_neta_anual *0.20;
txtcalculo.setText(String.format("%.2f", impuesto_anual_proyectado));
} else if (renumeracion_neta_anual >18900) {
impuesto_anual_proyectado=renumeracion_neta_anual *0.30;
txtcalculo.setText(String.format("%.2f", impuesto_anual_proyectado));
}
}
如您所见,字段 hours_extras 被声明为整数,但此时将字段 hours_extras 留空,它变为字符串,并且不执行给出上述错误的数学运算。有一些方法可以在不在 jtexfield 中写任何东西的情况下放手 因为我必须将该字段留空并在不需要时计算没有它的最终金额。谢谢你的回答。
如果您必须将空字符串作为特殊情况处理,并且希望乱码输入仍然抛出异常,您可以执行类似以下操作:
String extraHourString = txthorasextras.getText();
if(extraHourString.isEmpty()) { //alternatively, if(extraHourString.equals("")) {
... //handle the text being empty, or set a boolean flag so that you can handle it later
}
else { // we know the provided text is not empty now
//will still crash on gibberish inputs, but the empty string "" will never reach here
horas_extras = Integer.parseInt(extraHourString);
}
或者,如果您想完全忽略空字符串(将 horas_extras
保留为默认值),您可以执行如下操作:
int horas_extras = DEFAULT_VALUE; //declaration sets the default (could be any integer)
...
if(!txthorasextras.getText().equals("")) { //or, if(!txthorasextras.getText().isEmpty()) {
horas_extras = Integer.parseInt(txthorasextras.getText());
}
如果输入字符串为空,这将忽略对 horas_extras
的赋值,这将保留 horas_extras
(DEFAULT_VALUE
) 的当前值。请注意,乱码输入仍然像以前一样抛出异常。