i need the program to display error message if the user input wrong date format.
ID: 3809013 • Letter: I
Question
i need the program to display error message if the user input wrong date format. and if a person enters wrong input format, then it should display the error in the message dialog rather than the converted date.
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
Scanner input =new Scanner (System.in);
String date;
String m;
int day, month, year;
String[] totalmonths ={"", "January", "February", "March", "April", "May",
"June", "July", "August", "September", "October", "November", "December" };
date=jTextField1.getText();
StringTokenizer token = new StringTokenizer (date, "/");
month = Integer.parseInt (token.nextToken());
day= Integer.parseInt (token.nextToken());
year= Integer.parseInt (token.nextToken());
m= totalmonths [ month ];
//string check= month + day + year;
String result= m + "" + day + ", " + year;
JOptionPane.showMessageDialog(null, result);
}
Explanation / Answer
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package chegg.march;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
/**
*
* @author Sam
*/
public class DateChecker {
public static void main(String[] args) throws IOException {
String date;
String m;
int day, month, year;
String[] totalmonths = {"", "January", "February", "March", "April", "May",
"June", "July", "August", "September", "October", "November", "December"};
int days[] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
date = new BufferedReader(new InputStreamReader(System.in)).readLine();
StringTokenizer token = new StringTokenizer(date, "/");
try{
month = Integer.parseInt(token.nextToken());
if (month < 1 || month > 12){
System.out.println("Invalid month");
return;
}
day = Integer.parseInt(token.nextToken());
if (day < 1 || day > days[month]){
System.out.println("Invalid day");
return;
}
year = Integer.parseInt(token.nextToken());
if (year < 1800 || year > 2100){
System.out.println("Invalid year");
return;
}
m = totalmonths[month];
//string check= month + day + year;
String result = m + " " + day + ", " + year;
System.out.println(result);
} catch (NumberFormatException ex){
System.out.println("Number expected.");
}
}
}
I have edited the method with BufferedReader. Please update the code for your own use as needed. In case you need any help, please comment below.
NOTE: I have not checked the leap year constraints
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.