Java 循环验证

Java 循环验证,java,validation,date,loops,Java,Validation,Date,Loops,我需要帮助找出一个完整的日期,然后验证它是一个真正的日期 这就是我目前所拥有的 import java.util.Scanner; public class numerology { public static void main( String args[]) { Scanner input = new Scanner(System.in); int month = 0; int date =

我需要帮助找出一个完整的日期,然后验证它是一个真正的日期

这就是我目前所拥有的

import java.util.Scanner;

public class numerology
{
     public static void main( String args[])
        {
            Scanner input = new Scanner(System.in);

            int month = 0;
            int date = 0;
            int year = 0;

            char slash = '/';

            int checker = 0; //a flag used to tell if the birthday enter is a validate one 0 = no 1 = yes

            System.out.println ("Enter birthday(mm/dd/yyyy): ");                                
                month = input.nextInt();
                slash = input.next().charAt(0);
                date = input.nextInt();                            
                slash = input.next().charAt(0);                                                 
                year = input.nextInt();

      while (checker == 0)
            {
                if ( month < 1 || month > 12)
                {
                    System.out.printf("Bad month: %d\n", month);
                    System.out.print("Re-enter birthday(mm/dd/yyyy): \n");                       
                       month = input.nextInt();
                       slash = input.next().charAt(0);
                       date = input.nextInt();
                       slash = input.next().charAt(0);
                       year = input.nextInt();

                }
                else
                if ( slash != '/')
                {
                    System.out.print ("Use forward slash");
                    System.out.print ("Re-enter birthday(mm/dd/yyyy): ");
                    month = input.nextInt();
                    slash = input.next().charAt(0);                   
                    date = input.nextInt();                                                
                    slash = input.next().charAt(0);
                    year = input.nextInt();
import java.util.Scanner;
公共类命理学
{
公共静态void main(字符串参数[])
{
扫描仪输入=新扫描仪(System.in);
整月=0;
int date=0;
整年=0;
字符斜杠='/';
int checker=0;//用于指示生日输入是否为有效输入的标志0=no 1=yes
System.out.println(“输入生日(mm/dd/yyyy):”;
month=input.nextInt();
斜杠=输入.next().charAt(0);
date=input.nextInt();
斜杠=输入.next().charAt(0);
年份=input.nextInt();
while(checker==0)
{
如果(月<1 | |月>12)
{
System.out.printf(“坏月:%d\n”,月);
系统输出打印(“重新输入生日(mm/dd/yyyy):\n”);
month=input.nextInt();
斜杠=输入.next().charAt(0);
date=input.nextInt();
斜杠=输入.next().charAt(0);
年份=input.nextInt();
}
其他的
如果(斜杠!=“/”)
{
System.out.print(“使用正斜杠”);
System.out.print(“重新输入生日(mm/dd/yyyy):”;
month=input.nextInt();
斜杠=输入.next().charAt(0);
date=input.nextInt();
斜杠=输入.next().charAt(0);
年份=input.nextInt();
我有更多的代码来检查日期和年份,但是我现在的代码遇到了问题

我目前的问题是支票“/”不起作用


另外,当我运行这个循环时,没有办法退出它(这是一个无限循环)。这显然是一个问题,我在这方面工作了一个多星期,仍然无法解决。我一直在试图找到一种使用Int“checker”的方法以某种方式转到1,这样循环将退出。但是,这也没有运气。因此,我基本上应该放弃整个事情并重新开始吗?如果是这样,有人能给我指出正确的方向吗?

你应该在循环中的某个地方设置
checker=1
,这样while循环中的条件将变为false,代码将被删除我将退出

但是如果我在循环中设置int checker,它仍然无法帮助验证整个日期是否正确,是吗?我的意思是,无论是否输入验证日,检查程序都不会设置为1,它将与循环的其余部分一起执行。我不知道我是否完全理解了您的注释。但是
checker
var除非显式编码,否则iable不会设置为1。您应该添加
else
子句来执行该赋值。