几个java类验证输入
我使用java在netbeans上创建了一个程序。系统会提示用户输入“编号:”。例如,当他们输入数字“1”时,数组列表中的数据显示为“number:1”、“Name:userA”和“Phone:2”。如果我输入的值不在数组列表中,例如5 userA的详细信息将出现。如何输入验证以检查输入的数字是否保存在数组列表中?如果数字不在数组列表中,是否有方法告诉用户这一点,并允许他们再次尝试输入数字 数据类:几个java类验证输入,java,arrays,validation,arraylist,client-server,Java,Arrays,Validation,Arraylist,Client Server,我使用java在netbeans上创建了一个程序。系统会提示用户输入“编号:”。例如,当他们输入数字“1”时,数组列表中的数据显示为“number:1”、“Name:userA”和“Phone:2”。如果我输入的值不在数组列表中,例如5 userA的详细信息将出现。如何输入验证以检查输入的数字是否保存在数组列表中?如果数字不在数组列表中,是否有方法告诉用户这一点,并允许他们再次尝试输入数字 数据类: public class Data { private final List<D
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;
}
公共类数据{
私人最终名单;
公共数据(){
DetailsL=新的ArrayList();
添加(新的DetailsT(1,“userA”,2));
DetailsL.add(新的DetailsT(2,“userB”,9);
}
公共ArrayList getList(){
返回(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);
}
}
}
}
//初始化流以便发送消息
in=新的DataInputStream(clientSocket.getInputStream());
out=newdataoutputstream(clientSocket.getOutputStream());
数据p=新数据();
List DetailsL=(List)p.getList();
for(DetailsTq:detailsT){
整数;
while(true){
//收到消息后,立即打印出来!
number=in.readInt();
System.out.println(“\n”+”编号:“+Number”);
}
}
}
}
此外,当用户在程序中输入-1时,会话应该结束。尽管在输入“-1”时,我已在代码中尝试了这一点,userA的详细信息仍在检索中。非常感谢您提供的所有帮助。假设number是
DetailsT
类中的一个属性,您可以在Data
类中编写一个方法,通过迭代数组列表返回number的详细信息
对象,例如:
public DetailsT findByNumber(int number){
for(DetailsT details : DetailsL){
if(details.getNumber() == number){
return details;
}
}
return null;
}
大体上,您可以调用此方法,如果它返回null
,则可以提示用户再次输入号码,例如:
Data data = new Data();
DetailsT details = data.findByNumber(number);
if(details == null){
//do something
}else{
//do something else
}
我已经将其添加到数据类中,但如何在程序中调用它?我已经添加了一个示例作为答案。旁注:像DetailsL、DetailsT之类的名称…不要这样做。不要使用缩写;名称应该说明这是什么。名称有助于理解程序的功能;或者它们会模糊它…DetailsL代表列表和详细信息lsT是我得到的类型。但我告诉你:这些都是坏名字。例如:你不应该在一个名字中“指定”你收藏的类型。在大多数情况下,这样叫“细节”就足够了。为什么说它是一个列表?也许你以后会把它改成一个集合。