Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java—循环直到输入Y或N的方法_Java_Loops_Methods_Return - Fatal编程技术网

Java—循环直到输入Y或N的方法

Java—循环直到输入Y或N的方法,java,loops,methods,return,Java,Loops,Methods,Return,我环顾四周,没有发现任何问题可以直接回答我的问题,如果我错了,对不起。我正在写一个程序,该程序应该接收你的出生信息,年、月、日、小时、分钟,然后询问他们是否愿意再次这样做,但使用方法和循环,直到输入Y/N 我的问题是我无法获得接受Y/N并结束程序的方法,也无法在输入N时结束 我认为应该有一段时间或某种循环需要在方法中,但我很难弄清楚这一点 我所有的其他方法都有效,除了这一个,任何帮助都将不胜感激,谢谢 这是我现在的方法代码: public static boolean getYNConfirm(

我环顾四周,没有发现任何问题可以直接回答我的问题,如果我错了,对不起。我正在写一个程序,该程序应该接收你的出生信息,年、月、日、小时、分钟,然后询问他们是否愿意再次这样做,但使用方法和循环,直到输入Y/N

我的问题是我无法获得接受Y/N并结束程序的方法,也无法在输入N时结束

我认为应该有一段时间或某种循环需要在方法中,但我很难弄清楚这一点

我所有的其他方法都有效,除了这一个,任何帮助都将不胜感激,谢谢

这是我现在的方法代码:

public static boolean getYNConfirm(Scanner pipe, String prompt)
{

  String choice="";

  System.out.println(prompt);

        choice = pipe.nextLine();

        if(choice.equalsIgnoreCase("Y"))
        {
           return true;
        }
        else
        {
            return false;    
        }


}
这是我的主程序的代码:

public static void main(String[] args) 
{
    int year, month, day, hour, minutes;
    String msg="";
    boolean done = false;
    Scanner in = new Scanner(System.in);

   while(!done)
   {

   year = SafeInput.getIntInRange(in, "Enter the year you were born: ", 1965, 2000);

   month = SafeInput.getIntInRange(in, "Enter your month of birth: ", 1, 12);
   switch (month)
   {
      case 1:
      msg = "January";
      break;  
      case 2:
      msg = "February";
      break;
      case 3:
      msg = "March";
      break;
      case 4:
      msg = "April";
      break;
      case 5:
      msg = "May";
      break;
      case 6:
      msg = "June";
      break;
      case 7:
      msg = "July";
      break;
      case 8:
      msg = "August";
      break;
      case 9:
      msg = "Septemeber";
      break;
      case 10:
      msg = "October";
      break;
      case 11:
      msg = "November";
      break;
      case 12:
      msg = "December";
      break;         
   }

   hour = SafeInput.getIntInRange(in, "Enter the hour you were born in: ", 1, 24);
   minutes = SafeInput.getIntInRange(in, "Enter the minutes you were born: ", 1, 59);

   System.out.println("You were born: " + year + " , " + msg + " , " + hour + " hr. " + minutes + " mins. ");


   SafeInput.getYNConfirm(in, "Would you like to play again?");

   }
}
}


谢谢您的帮助。

完成的
值始终为
false
。最后一行的更改:

done = SafeInput.getYNConfirm(in, "Would you like to play again?");
编辑:

如果您返回
true
也在此处更改,则您的逻辑不适用:

if(choice.equalsIgnoreCase("Y"))
        {
           return false;
        }
        else
        {
            return true;    
        }

您需要根据getYNConfirm方法的返回更改done base的值。所以最后一行应该是

done = SafeInput.getYNConfirm(in, "Would you like to play again?");

你怎么回事啊?“我的问题是我无法获得接受Y/N并结束程序的方法,也无法在输入N时结束。”这一点相当模糊。将最后一行更改为:
done=SafeInput.getYNConfirm(在“您想再次播放吗?”)中)
,否则您将丢失值,
done
保持为false。很抱歉,含糊不清,基本上当用户输入Y或N时,程序会自动循环,如果我输入N则不会停止。修复了它,谢谢大家@欢迎光临!如果它解决了你的问题,你可以接受它。