如果PID中的值已存在于阵列中,我该如何要求用户重新输入?
ex:他进入A然后B再次输入A,然后他从最后输入的A将不被接受,因为它已经存在。
int[] Process = {};
int NumberofProcess = 0;
String[] PID = new String[10]; //Proces ID
System.out.print("Enter a number of Process from 1 to 10 : ");
while(bError){
if(scan.hasNextInt()){
NumberofProcess = scan.nextInt();
}else{
scan.next();
continue;
}
bError = false;
}
//---------------- Ask for the user to input for the Process id AT and EX -------
for(int i=0;NumberofProcess > i;i++){
System.out.print("Please Enter a ProcessID " + (i + 1) + " : ");
PID[i] = scan.next();
}
答案 0 :(得分:2)
我不会使用数组而是使用LinkedHashSet
(假设您要保留输入顺序)。然后使用set的contains(...)
方法检查或尝试使用add(...)
添加PID并检查返回值(如果尚未添加,则为false,即它是否已存在于集合中)。
答案 1 :(得分:1)
如果您可以改为使用Set
,请按照托马斯的建议进行操作,如果值的顺序不重要则使用普通HashSet
,否则使用LinkedHashSet
。
如果必须使用数组,请使用`Arrays.binarySearch'检查数组是否已包含字符串:
String pid = scan.next();
if (Arrays.binarySearch(PID, pid) < 0) {
PID[i] = pid;
}
注意:当然您需要导入java.util.Arrays
。
答案 2 :(得分:0)
您需要创建一个结构,如果您存储用户已经放入系统的PID。
然后,您应该针对该存储中的项目验证每个新输入。如果发现碰撞,您只需通知用户并重复此过程,直到他输入有效数据或选择退出。
在Java中,您可以使用称为集合的专用数据结构,这将加快查找过程。简单ArrayList狂野足以满足您的需求。
申报
Collection<String> storage = new ArrayList<>();
使用
boolean wasStored = storage.contains(input);