java - Beginner: Do while loop issue -
ello, got minor issue haven't got clue on what's going wrong... snippet of code:
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 want switch format 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; }
the first part, regards year, , it's associated method, loops fine if input wrong.
the second part, 'gous', method's remotely same thing, checking char if it's y/n - works fine regards check , all, after hitting ok correct display of date, starts gous loop again, , answers start concatenate previous display, , on. want app end after displaying date.
any pointing out flaw appreciated.
it seems problem because of case of input character, checking lower-case in validoption
, checking upper-case in main method. believe input upper case, , validoption
returns false.
change validoption
to:
public static boolean validoption (char conversion) { return conversion == 'y' || conversion == 'n'; }
or use java.lang.character
tolower
or toupper
methods.
Comments
Post a Comment