我试图制作一个简单的程序,如果用户在数组中输入一个数字,那么数组编号等于的数字就会出现。除非用户输入不在数组中的数字,然后在数组中放入一个数字,否则它完美地工作。会发生什么是程序没有显示正确位置的答案。
Scanner ethan = new Scanner(System.in);
System.out.println("Enter array place: ");
int amount = ethan.nextInt();
int array[] = {2, 4, 9};
for(int i = 0; i<amount; i++)
{
if (amount == 0) {
System.out.println(array[0]);
} else if (amount == 1) {
System.out.println(array[1]);
} else if (amount == 2) {
System.out.println(array[2]);
} else {
System.out.println("Enter integer in array:");
amount = ethan.nextInt();
}
}
答案 0 :(得分:2)
您不应使用for循环中输入的数字
for(int i = 0; i < amount; i++){
如果我输入0怎么办?该程序不会运行单个循环。
试试这个,它应该是有效的。我在代码中为你做了一些评论。
int array[] = {2, 4, 9};
Scanner ethan = new Scanner(System.in);
/**
* This gets one valid number from the user
*/
public void getOneNumber() {
/**
* This is our "switch" variable
*/
boolean validIndexGiven = false;
while (!validIndexGiven)
{
/** This is actually called "array index"*/
System.out.println("Enter array index: 0 to " + (array.length - 1));
int index = ethan.nextInt();
/** Here we check if given integer is in the bounds of array.
* No need to check every possible value.
* What if we had array[100]? */
if (index >= 0 && index < array.length) {
/** Amount was a valid number. */
System.out.println(array[index]);
/** Toggling the switch */
validIndexGiven = true;
}
}
}
/**
* This prompts the user for numbers as many times as there are elements in array
*/
public void getManyNumbers() {
int length = array.length;
for (int i = 0; i < length; i++) {
getOneNumber();
}
}
答案 1 :(得分:1)
似乎您希望用户能够输入数字,因为数组中有数字(在这种情况下为3次)。但是,您似乎只允许用户输入它,但很多时候他们在开头键入(当它说&#34;输入数组位置:&#34;。为什么不尝试i<array.length
而不是{{ 1}}?或者,您可以使用i<amount
循环,只有在此人输入有效数字时才会增加while
。
提示:您可以说i
答案 2 :(得分:0)
我明白了。这是代码(也谢谢大家留下一些答案):
Scanner ethan = new Scanner(System.in);
System.out.println("Enter array place: ");
int amount = ethan.nextInt();
int array[] = { 2, 4, 9 };
while(true){
if (amount == 0) {
System.out.println(array[0]);
break;
} else if (amount == 1) {
System.out.println(array[1]);
break;
} else if (amount == 2) {
System.out.println(array[2]);
break;
} else {
System.out.println("Enter integer in array:");
amount = ethan.nextInt();
}
}
}
}