读取用户输入:未输入任何值 v 输入一个值
Reading user input: No value entered v one value entered
我的方法之一有问题:
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 语句,那么当用户未输入任何值时我会收到错误消息。我很困惑如何让它在两种不同的情况下都能很好地发挥作用。
基本上,当用户输入一个值时,上述方法将不起作用。
试试这个;更简单:
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 while
中的 if
循环逻辑不对。假设您有一个输入 3
,我们已经解决了单输入错误。就在第二个 if
语句之前:
i
是 1.
count
是 1.
nums[0]
是 3.
接下来,if (input.hasNextInt() == false)
将计算为真,因为 3
是我们唯一的输入。那么:
i
还是1.
count
现在是 2.
nums[1]
是 3.
我几乎可以肯定这不是你想要的。
我的方法之一有问题:
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 语句,那么当用户未输入任何值时我会收到错误消息。我很困惑如何让它在两种不同的情况下都能很好地发挥作用。
基本上,当用户输入一个值时,上述方法将不起作用。
试试这个;更简单:
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 while
中的 if
循环逻辑不对。假设您有一个输入 3
,我们已经解决了单输入错误。就在第二个 if
语句之前:
i
是 1.count
是 1.nums[0]
是 3.接下来,
if (input.hasNextInt() == false)
将计算为真,因为3
是我们唯一的输入。那么:i
还是1.count
现在是 2.nums[1]
是 3.
我几乎可以肯定这不是你想要的。