无法理解简单程序中的InputMismatch异常

时间:2014-09-02 17:26:04

标签: java do-while inputmismatchexception

我必须编写一个读取整数序列的程序,直到'停止'输入,将整数存储在一个数组中,然后显示输入的数字的平均值。输入“停止”时,我收到输入不匹配的异常。所以它并没有真正起作用,但我不明白为什么。非常感谢帮助。

import java.util.Scanner;

公共类MeanUsingList {

public void mean() {

    String s;
    int n = 0;
    int i = 1;
    int[] array = { n };

    do {
        System.out.println("Enter an integer");
        Scanner in = new Scanner(System.in);
        n = in.nextInt();
        s = in.nextLine();

    } while (s != "stop");
    {
        System.out.println("Enter an integer");
        Scanner in2 = new Scanner(System.in);
        int x = in2.nextInt();
        array[i] = x;
        i++;
    }

    int av = 0;

    for (int y = 0; y < array.length; y++) {
        av += array[y];
    }

    System.out.println(av);

}

public static void main(String[] args) {
    MeanUsingList obj = new MeanUsingList();
    obj.mean();
}

}

1 个答案:

答案 0 :(得分:0)

首先int[] array = { n };只创建一个数组,其中包含0作为元素。

其中的逻辑永远不会执行while (s != "stop");

你想要这样的东西

    List list = new ArrayList();
    //instead of array used arraylist because of dynamic size

    do {
        System.out.println("Enter an integer");
        Scanner in = new Scanner(System.in);
        n = in.nextInt(); //get the input
        list.add(n);      // add to the list
        Scanner ina = new Scanner(System.in); // need new scanner object
        s = ina.nextLine(); //ask if want to stop

    } while (!s.equals("stop")); // if input matches stop exit the loop

    System.out.println(list); // print the list

我建议你学习基础知识