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
toLower
或toUpper
方法。