我正在做一些简单的输入/输出程序,输入有他们练习的名字,年龄和体育。最后我必须计算平均值,但我不知道while循环结束时发生了什么,因为程序无法输出平均值。
import java.util.StringTokenizer;
import javax.swing.JOptionPane;
public class CapturarPersonas01 {
public static void main(String[] args) {
String strNombreApellido = "";
int intEdad = 0;
String strDeportes = "";
String espacios = " ";
int intEdadTotal = 0, i = 0;
StringTokenizer separador = new StringTokenizer(strNombreApellido, " ");
//ALINIAMIENTO DE LOS HEADERS
System.out.println("NOMBRE" + espacios.substring(0, 9) + "|" + "APELLIDO" +
espacios.substring(0, 7) + "|" + "EDAD" + espacios.substring(0, 5) + "|" + "DEPORTES" +
espacios.substring(0, 9) + "|");
while (!strNombreApellido.toUpperCase().equals("FIN")) {
strNombreApellido = JOptionPane.showInputDialog("Ingrese el nombre y apellido");
//TOKENIZER EL NOMBRE Y APELLIDO
separador = new StringTokenizer(strNombreApellido, " ");
String strNombre = separador.nextToken();
String strApellido = separador.nextToken();
intEdad = Integer.parseInt(JOptionPane.showInputDialog("Ingresa su edad porfavor"));
strDeportes = JOptionPane.showInputDialog("Ingresa los deportes");
//SALIDA
System.out.print(strNombre + espacios.substring(0, 15 - strNombre.length()) + "|"
+ strApellido + espacios.substring(0, 15 - strApellido.length()) + "|" + intEdad
+ espacios.substring(0, 9 - String.valueOf(intEdad).length()) + "|"
+ strDeportes.substring(0, strDeportes.indexOf(";")));
strDeportes = strDeportes.substring(strDeportes.indexOf(";"), strDeportes.length());
//TOKENIZER LOS DEPORTES EXTRA
separador = new StringTokenizer(strDeportes, ";");
while (separador.hasMoreTokens()) {
System.out.print("\n" + espacios.substring(0, 41) + "|" + separador.nextToken());
}
System.out.print("\n");
intEdadTotal += intEdad;
i++;
}
System.out.println("EDAD PROMEDIA: " + (intEdadTotal / i));
}
}
答案 0 :(得分:1)
输入while循环后输入输入错误。
strNombreApellido = JOptionPane.showInputDialog("Ingrese el nombre y apellido");
while (!strNombreApellido.toUpperCase().equals("FIN")) {
//stuff
//take name again at the end of the loop iteration
strNombreApellido = JOptionPane.showInputDialog("Ingrese el nombre y apellido");
}
您必须先输入输入,否则您将始终进入您尝试获取您的名字和apellido的循环,这就是您的例外发生的地方。如果您只更改此项并运行该程序,则此行上会出现0除以
的错误System.out.println("EDAD PROMEDIA: " + (intEdadTotal / i));
我将i的值设为1,如果没有输入名称,则删除错误。