-1

如果 PID 中的值已经存在于数组中,我如何要求用户重新输入?

例如:他输入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(); 

}
4

3 回答 3

2

我不会使用数组,而是使用 a LinkedHashSet(假设您想保留输入顺序)。然后检查使用集合的contains(...)方法或尝试添加PID 使用add(...)并检查返回值(如果没有添加则返回false,即如果它已经存在于集合中)。

于 2013-08-28T13:28:57.183 回答
1

如果您可以使用 aSet代替,请按照 Thomas 的建议进行操作,HashSet如果值的顺序不重要,则使用正常的,LinkedHashSet否则使用。

如果必须使用数组,请使用 `Arrays.binarySearch' 检查数组是否已包含字符串:

String pid = scan.next(); 
if (Arrays.binarySearch(PID, pid) < 0) {
    PID[i] = pid;
}

注意:当然你需要导入java.util.Arrays.

于 2013-08-28T13:47:41.917 回答
0

您需要创建一个结构,以存储用户已经放入系统的 PID。

然后,您应该针对该存储中的项目验证每个新输入。如果您发现冲突,您只需通知用户并重复该过程,直到他输入有效数据或选择退出。

在 Java 中,您可以使用称为集合的专用数据结构,这将加快查找过程。简单的ArrayList足以满足您的需求。

声明

Collection<String> storage = new ArrayList<>();

使用

boolean wasStored = storage.contains(input);

于 2013-08-28T13:29:06.107 回答