3 回答
TA贡献1900条经验 获得超5个赞
您应该摆脱 for 和 second while 循环,并检查输入的值是否在所需范围内。
如果是,则验证重复项,将其存储在数组中并增加计数器。如果不是,则显示错误的输入消息。
无论哪种方式,它都会继续请求有效输入,直到计数器达到 5。
我希望它有帮助!
TA贡献1843条经验 获得超7个赞
首先,摆脱嵌套循环。他们是多余的。让我们看看您的问题的规格。您的输入需要满足 3 个要求:
大于等于10
小于或等于 100
成为数组内的唯一元素
前两个条件很简单,可以检查。对于最终条件,您需要搜索数组中的值并查看是否有与您的输入匹配的值。如果是,则输入无效。解决这个问题的一个简单方法是检查数组的每个成员,如果发现重复就停止。有更好、更有效的方法来做到这一点。不要害怕搜索互联网来学习搜索算法。以下是您问题的简单解决方案。它远非理想或高效,但对于初学者来说很容易理解。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int[] array = new int[5];
int counter = 0;
int userInput;
while(counter < 5) {
System.out.print("Enter a number between 10 & 100: ");
userInput = in.nextInt();
if( (userInput >= 10 && userInput <= 100) && !searchDuplicates(array, userInput) ) {
array[counter] = userInput;
counter++;
} else {
System.out.println("Invalid value entered");
}
}
for(int i = 0; i < array.length; i++)
System.out.println("Value " + (i + 1) + ": " + array[i]);
}
private static boolean searchDuplicates(int[] array, int input) {
for(int i = 0; i < array.length; i++)
if(array[i] == input)
return true;
return false;
}
}
TA贡献1810条经验 获得超4个赞
counter
当 varx
为你做同样的事情时不要使用变量。当两个循环的限制条件需要进行检查,不要使用嵌套循环一起在每个迭代。尽可能将这些循环合并为一个循环。
添加回答
举报