简单咨询程序中的输出错误

时间:2015-10-21 22:38:41

标签: java

我正在做一些简单的输入/输出程序,输入有他们练习的名字,年龄和体育。最后我必须计算平均值,但我不知道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));
    }
}

1 个答案:

答案 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,如果没有输入名称,则删除错误。