正如我写这篇文章时,我可以想象这个问题是多么基本,但我在这里......
我有一个 Java 客户端,其中我验证用户输入的“日期”输入,如果有效,则将其传递到其他地方。我正在使用 JOptionPane 显示输入对话框。
基本上,当用户输入无效的日期格式时,我的程序将退出,用户必须再次重新启动程序。相反,我希望在显示“输入的日期无效”消息后显示弹出输入对话框。再次将控制权传递给该行代码的最佳方法是什么?
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Properties;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import javax.swing.JOptionPane;
public class Client {
static SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
public static void main(String[] args) throws IOException, ParseException {
Properties prop = new Properties();
InputStream IP = null;
// SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
try {
IP = new FileInputStream("Client.properties");
prop.load(IP);
String host = prop.getProperty("ServerIP");
String port = prop.getProperty("Port");
int port1 = Integer.parseInt(port);
Socket s = new Socket(host, port1);
String reportDate = JOptionPane.showInputDialog("Enter Date:");
PrintWriter out = new PrintWriter(s.getOutputStream(), true);
/**
* User Input Validation
*/
if (reportDate.matches("^((19|20)\\d\\d)-(0?[1-9]|1[012])-(0?[1-9]|[12][0-9]|3[01])$")) {
out.println(reportDate);
s.close();
System.exit(0);
} //if
else {
String Error = "INCORRECT date format entered!";
JOptionPane.showMessageDialog(null, Error);
} //else
} catch (IOException ex) {
ex.printStackTrace();
} finally {
if (IP != null) {
try {
IP.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
最佳答案
当您在成功案例中使用 System.exit(0)
时,只需使用 while (true) { }
将代码包装在无限循环中即可。
关于Java - 如果条件失败则返回到程序流程的开头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36482251/