我正在寻找一种很好的方法来检查用户的输入,通过JOptionPane showConfirmDialog,确保它包含一个字符串和一个可信的年龄。这个想法是使用这些输入并将它们添加到一个对象,然后将其添加到一个ArrayList。JOptionPane输入验证
的问题是在下面的”“NyLis”级。 名称= NAMN,与土地=国家。阿尔德=年龄。年龄应在18到100之间
- 有没有一种方法来检查该字符串是一个实际的字符串?
- 有没有办法返回窗口,如果输入无效,并保持前面的输入,所以使用可以拿起它出错的地方?
- 是try和catch块a这里有很好的选择,我将如何实施它们?
我一直在玩while循环,并尝试catch块,但我无法将我的愚蠢的头包裹在一起。
任何帮助非常感谢。
// JOptionPane的窗口
Form(){
setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
JPanel rad0 = new JPanel();
rad0.add(new JLabel("StartNr: "+ list.size()+1+""));
add(rad0);
JPanel rad1 = new JPanel();
rad1.add(new JLabel("Namn: "));
namnFält = new JTextField(15);
rad1.add(namnFält);
add(rad1);
JPanel rad2 = new JPanel();
rad2.add(new JLabel("Land: "));
landFält = new JTextField(15);
rad2.add(landFält);
add(rad2);
JPanel rad3 = new JPanel();
ålderFält = new JTextField(5);
rad3.add(ålderFält);
rad3.add(new JLabel("Ålder: "));
rad3.add(ålderFält);
add(rad3);
}
}
//监听
class NyLis implements ActionListener{
public void actionPerformed(ActionEvent ave){
Form f = new Form();
int svar = JOptionPane.showConfirmDialog(null, f);
if (svar != JOptionPane.OK_OPTION)
return;
String namn = f.namnFält.getText();
String land = f.landFält.getText();
int ålder = Integer.parseInt(f.ålderFält.getText());
boolean success=false;
while(!success){
JOptionPane.showMessageDialog(null, "Fel. Försök igen.");
int svar2 = JOptionPane.showConfirmDialog(null, f);
if (svar2 != JOptionPane.OK_OPTION)
return;
if(!namn.isEmpty() && !land.isEmpty()&&!(ålder<18 || ålder>100)){
success=true;
int startNr = list.size()+1;
Tävlande tv = new Tävlande (namn,land,ålder,startNr,Double.MAX_VALUE);
list.add(tv);
visa.setEnabled(true);
}
}
}
}
//对象
public class Tävlande implements Comparable<Tävlande>{
private String namn;
private String land;
private int ålder;
private int startNr;
private double tid;
public Tävlande (String namn, String land,int ålder,int startNr, double tid){
this.namn = namn;
this.land = land;
this.ålder = ålder;
this.startNr = startNr;
this.tid = tid;
}
public String getNamn(){
return namn;
}
public String getLand(){
return land;
}
public int getÅlder(){
return ålder;
}
public int getStartNr(){
return startNr;
}
public double getTid(){
return tid;
}
public void setTid(Double tid) {
this.tid = tid;
}
public String toString(){
String str = namn +" " + ", Land: "+land + ", Ålder: " +ålder+ ", Startnummer: " + " "+startNr;
return str;
}
public String toString2(){
String str = namn +" " + ", Land: "+land + ", Ålder: " +ålder+ ", Startnummer: " + " "+startNr+ ", Tid: "+tid;
return str;
}
public boolean equals(Object other){
if (other instanceof Tävlande){
Tävlande t = (Tävlande) other;
if (startNr == t.startNr)
return true;
else
return false;
}
else{
return false;
}
}
@Override
public int compareTo(Tävlande other) {
if(startNr < other.startNr)
return -1;
else if (startNr > other.startNr)
return 1;
else
return 0;
}
}
为了更好地帮助越早,张贴[MCVE(http://stackoverflow.com/help/mcve)(最小完备和可验证例)。 –