几个java类验证输入

时间:2016-03-15 23:45:29

标签: java arrays validation arraylist client-server

我使用java在netbeans上创建了一个程序。提示用户输入“数字:”。例如,当他们输入数字“1”时,数组列表中的数据显示为“Number:1”“Name:userA”和“Phone:2”。如果我输入的值不在数组列表中,例如5将显示userA的详细信息。我如何输入验证来检查输入的数字是否保存在数组列表中?如果数字不在数组列表中,则有一种方法可以告诉用户这个并允许他们再次尝试输入数字。

数据类:

public class Data {

    private final List<DetailsT> DetailsL;

    public Data() {
        DetailsL = new ArrayList<>();
        DetailsL.add(new DetailsT(1, "userA", 2));
        DetailsL.add(new DetailsT(2, "userB", 9);

    }

    public ArrayList<?> getList() {
        return (ArrayList<?>) DetailsL;
    }

输出类:

//initialize streams so we can send message
    in = new DataInputStream(clientSocket.getInputStream());
    out = new DataOutputStream(clientSocket.getOutputStream());


    Data p = new Data();
    List<DetailsT> DetailsL = (List<DetailsT>) p.getList();     


     for (DetailsTq : detailsT) {      
        int number; 
        while (true) {
            // as soon as a message is being received, print it out!
            number = in.readInt();
            System.out.println("\n" + "Number: " + number);
        }
     }
    }
}

此外,当用户在程序中输入-1时,会话应该结束。我在我的代码中尝试了这个,但是当输入“-1”时,仍然会检索userA的详细信息。感谢所有帮助,谢谢。

1 个答案:

答案 0 :(得分:0)

假设number是DetailsT类中的一个属性,您可以在Data类中编写一个方法,通过迭代数组列表返回Details对象的数字,例如:

public DetailsT findByNumber(int number){
    for(DetailsT details : DetailsL){
        if(details.getNumber() == number){
            return details;
        }
    }
    return null;
}

在main中,您可以调用此方法,如果它返回null,则可以提示用户再次输入该数字,例如:

Data data = new Data();
DetailsT details = data.findByNumber(number);
if(details == null){
 //do something
}else{
 //do something else
}