我正在尋找一種很好的方法來檢查用戶的輸入,通過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)(最小完備和可驗證例)。 –