Ello,有一个小问题,我不知道怎么回事...代码片段:

do{
      String third = JOptionPane.showInputDialog(null, "Please enter Year ["+day+"/"+month+"/YY?]");
      year = Integer.parseInt (third);
      validChoice = validYear(year);
   }while(!validChoice);

do{
      String goUS = JOptionPane.showInputDialog(null, "Do you want to switch the format to US? [Y/N]");
      goUS = goUS.toUpperCase();
      char conversion = goUS.charAt(0);
      validChoice = validOption(conversion);


      switch(conversion){
          case 'Y':

              if(year < 10)
               {
                  date.append(month).append("/").append(day).append("/" + "200").append(year);
               }else{
                  date.append(month).append("/").append(day).append("/" + "20").append(year);
              }
              JOptionPane.showMessageDialog(null, date);
              break;

          case 'N':

              if(year < 10)
               {
                  date.append(day).append("/").append(month).append("/" + "200").append(year);
               }else{
                  date.append(day).append("/").append(month).append("/" + "20").append(year);
              }
              JOptionPane.showMessageDialog(null, date);
              break;

          default:
              JOptionPane.showMessageDialog(null, "Invalid answer! Use Y/N", "Error", JOptionPane.ERROR_MESSAGE);
       }}while(!validChoice);

//// METHODS:

public static boolean validYear (int year){
    boolean isValid = true;

    if(year < 1 || year > 99)
     {
      isValid = false;
     }

    return isValid;
}

public static boolean validOption (char conversion){
    boolean isValid = true;

    if(conversion != 'y' || conversion != 'n')
     {
      isValid = false;
     }

    return isValid;
}


第一部分,关于年份及其相关方法,如果输入错误,则循环良好。

第二部分,“ goUS”,该方法几乎是同一件事,检查char是否为y / n-就检查和所有方面而言都工作正常,但是在按OK并正确显示日期后,它会启动goUS再次循环,答案开始从先前的显示连接起来,依此类推。我希望应用程序在显示日期后才结束。

指出我的缺点的任何帮助将不胜感激。

最佳答案

似乎问题是由于输入字符的大小写,您在validOption中使用小写字母进行检查,而在main方法中则使用大写字母进行检查。我相信您的输入是大写字母,并且validOption返回false。

validOption更改为:

public static boolean validOption (char conversion) {
    return conversion == 'Y' || conversion == 'N';
}


甚至使用java.lang.Character toLowertoUpper方法。

09-25 22:23