读取用户输入:输入的值不输入任何值

时间:2016-11-11 02:15:13

标签: java arrays eclipse computer-science

我的某个方法存在问题:

public static int readIntoArray(Scanner input, int[] nums) {
    int i = 0; 
    int count = 0; //Will hold the number of values in array

    if (input.hasNextInt() == false) {
        count = 0;
    }

    else{
        int num = input.nextInt();

        do {
            nums[i] = num;
            i++;
            count++;
            num = input.nextInt();
            if (input.hasNextInt() == false) {
                nums[i] = num;
                count++;
            }
            else {

            }
        } while(input.hasNextInt() && i < 100);
    }

    return count;
}

这是我程序中的一种方法。之前我的问题是,如果用户点击输入而没有输入任何值,我会收到错误。我通过在上面的代码中创建if-else语句来解决这个问题。

但是因为这是方法的开始部分,所以当用户只输入一个值时会出现错误。我不知道如何解决这个问题,因为如果我移动第一个if语句,那么当用户输入任何值时我都会收到错误。我很困惑如何通过两种不同的场景来实现这一目标。

基本上,当用户输入一个值时,上面的方法不会起作用。

1 个答案:

答案 0 :(得分:0)

试试这个;它更简单:

public static int readIntoArray(Scanner input, int[] nums) {

    int count = 0; // Will hold the number of values in array

    while(input.hasNextInt() && count < 100) {
        nums[count] = input.NextInt();
        count++;
    }

    return count;
}

假设您在输入中只有一个值。您的代码中断是因为在您递增count之后,将num设置为下一个int(不存在):

num = input.nextInt(); // there isn't a next int!

另外,我认为if中的do while循环中的逻辑已关闭。假装您有一个输入3,我们已经解决了单输入错误。就在第二个if声明之前:

  • i是1.
  • count是1.
  • nums[0]是3。

    接下来,if (input.hasNextInt() == false)将评估为true,因为3是我们唯一的输入。然后:

  • i仍然是1.

  • count现在是2.
  • nums[1]是3。

我几乎可以肯定这不是你想要发生的事情。