我希望将一个介于10和100之间的整数输入到一维数组中,如果该值已经存在于数组中的任何位置,请不要将其插入到数组中,而是通知用户并恢复输入直到5个唯一数字为添加。
这是我的代码。我知道它不对,但你可以看到我想要做的是使用简单的for循环和搜索方法来获取数字,将它们存储到数组中并搜索重复数据。我的代码中的问题是,我似乎无法将我刚刚输入的数字设置为变量' key'我需要发送到方法'搜索'。
// input an integer between 10 and 100, add to array and print results. if value is already in array, notify user, print array. keep adding to array until 5 unique values have been entered
import java.util.Scanner;
public class ArraySearch {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int[] list = new int[5];
for (int i = 0; i < list.length; i++) {
System.out.println("Enter number: ");
list[i] = input.nextInt();
}
int count = search(list, key);
System.out.println("It has been entered.");
}
public static int search(int[] list, int key) {
int count = 0;
for (int i = 0; i < list.length; i++) {
if (list[i].equals(key)) {
;
}
count++;
}
return (count);
}
}
答案 0 :(得分:1)
数组的简单示例。可以使用备用数据结构列表集进行改进。
search()方法基本上包含在while()循环中,即for()循环示例搜索已经包含的目标号。
.answers
在循环之前声明,并确保找到5个唯一数字。
getAllByQuestionId()
替代版本:
int c = 0;
另外,使用import java.util.Arrays;
import java.util.Scanner;
public class ArraySearch {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int[] list = new int[5];
int c = 0;
System.out.println("Enter number: ");
while (c < 5 && s.hasNext()) {
int n = s.nextInt();
boolean has = n >= 10 && n <= 100;
for (int i = 0; i <= c && !has; ++i)
if (list[i] == n)
has = true;
if (!has) {
System.out.println("It has been entered.");
list[c++] = n;
}
}
System.out.println("Result = " + Arrays.toString(list));
s.close();
}
}
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;
public class ArraySearch {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
Set<Integer> set = new HashSet<Integer>(5);
int c = 0;
System.out.println("Enter number: ");
while (c < 5 && s.hasNext()) {
int n = s.nextInt();
if ((n < 10) || (n > 100) || !set.add(n))
continue;
else {
System.out.println("It has been entered.");
c++;
}
}
System.out.println("Result = " + set);
s.close();
}
}
编辑:还添加了10-100规格
edit2:使用search()方法
的方法答案 1 :(得分:0)
您将输入直接保存在数组中
将输入保存在时间变量中,您将传递给search
。并根据search
的结果添加到数组或提示另一个输入。
int[] list = new int[5];
for (int i = 0; i < list.length; i++) {
System.out.println("Enter number: ");
int temp = input.nextInt();
if(search(list,temp) == 0)
list[i] = temp;
}else{
System.out.println("It has been entered.");
i--;
}
}