java - 如何将唯一输入的值输入到数组中
问题描述
我的作业问题是创建一个名为 NoDuplicates 的过程,它将提示用户输入 7 个唯一整数。当用户输入数字时,要求他们重新输入之前输入过的数字。输出 7 个唯一数字。
我尝试了很多不同的 while 和 for 循环组合,但没有任何效果
import java.util.Scanner;
public class arrayexcersisespart3num1 {
public static void main(String []arg) {
Scanner input = new Scanner(System.in);
noDuplicates(input);
}
public static void noDuplicates(Scanner input) {
boolean check = true;
int jumbo;
int[]noDuplicates = new int [7];
System.out.println("Please enter a unique Name");
for (int i = 0; i<noDuplicates.length;) {
System.out.println("Enter a number");
jumbo = input.nextInt();
while(check ==true|| i>0) {
check = false;
System.out.println("Please enter another number");
jumbo = input.nextInt();
if (jumbo==(noDuplicates[i])) {
check = true;
System.out.println("this Name has been previously added. Please choose another number");
}
}
jumbo = noDuplicates[i];
System.out.print("this Number has been previously successfully added in position ");
System.out.println(i+1);
check = false;
i++;
}
}
}
解决方案
试试这个 Collection.contains 的逻辑,然后将它添加到集合中。它将从控制台询问用户的输入并检查数据是否存储在列表中。像这样,它将向用户询问使用列表中 7 个唯一时间的值
public void uniqueDataCheckOnConsoleOnLimitByList() {
int capacity = 7;
List<String> dataList = new ArrayList<>(capacity);
while (capacity != 0) {
System.out.println("Please enter a number");
Scanner in = new Scanner(System.in);
String s = in.nextLine();
if (dataList.contains(s)) {
System.out.println("You already entered the number:" + s);
//System.out.println("Please Enter a New Number");
} else {
dataList.add(s);
capacity--;
}
}
}
因为我没有检查对 Array 的要求。如果是数组,请检查它。
public void uniqueDataCheckOnConsoleOnLimitByArray() {
int capacity = 7;
String data[]= new String[capacity];
while (capacity != 0) {
System.out.println("Please enter a number");
Scanner in = new Scanner(System.in);
String s = in.nextLine();
if (containsArray(data, s)) {
System.out.println("You already entered the number:" + s);
//System.out.println("Please Enter a New Number");
} else {
data[capacity-1]=s;
capacity--;
}
}
}
public boolean containsArray(String data[],String input){
for(String s:data){
if(input.equalsIgnoreCase(s))
return true;
}
return false;
}
推荐阅读
- firebase - Firebase Cloud Firestore 综合索引 NO 查询结果
- java - 使用 Clock.fixed() 模拟 LocalDate.now(clock)
- python - 如何从python中的json数据中减去两个值
- reactjs - 如何处理在反应前端以错误顺序到达的服务器响应?
- javascript - moment.js 为 datetime datetime 返回不正确的秒数
- node.js - 即使使用返回,电子邮件仍在发送和数据捕获
- mongodb - MongoDB查询多个子文档
- html - WAMP 停止加载 Bootstrap
- oop - 如何将最终字符串 [name] 转换为颤振中的双精度值?
- azure-devops - 是否可以自定义测试用例工作项的步骤?