2016-11-11 169 views
1

我遇到了我的方法之一的一个问题:读取用户输入:无输入值v一个输入值

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语句,那么当用户输入任何值时都会出现错误。我很困惑如何让这个在两种不同的场景中表现出色。

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

+0

* psst *,https://youtu.be/0Brn4YF_LY4 – Arvind

回答

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! 

而且,我认为逻辑是关在do whileif循环。假设你有一个输入3,我们已经解决了单输入错误。前右起第二个if声明:

  • i为1
  • count为1
  • nums[0]为3

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

  • i仍为1

  • count现在是2
  • nums[1]为3

我几乎可以肯定这是不是你想发生什么。

+1

哦,我看到我做了什么。这是我第一次使用input.hasNextInt()方法,所以我不完全确定如何实现它。现在好了,比较代码是有意义的。谢谢! – Jay58t