Complete main() to read dates from input, one date per line. Each date's format must be as follows: March 1, 1990. Any d
Posted: Sun May 15, 2022 8:01 am
Here is my code:
import java.util.Scanner;
public class DateParser {
public static int getMonthAsInt(String monthString)
{
int monthInt;
// Java switch/case statement
switch (monthString) {
case "January":
monthInt = 1;
break;
case "February":
monthInt = 2;
break;
case "March":
monthInt = 3;
break;
case "April":
monthInt = 4;
break;
case "May":
monthInt = 5;
break;
case "June":
monthInt = 6;
break;
case "July":
monthInt = 7;
break;
case "August":
monthInt = 8;
break;
case "September":
monthInt = 9;
break;
case "October":
monthInt =
10;
break;
case "November":
monthInt =
11;
break;
case "December":
monthInt =
12;
break;
default:
monthInt = 0;
}
return monthInt;
}
public static void main(String[] args) {
Scanner scnr = new Scanner(System.in);
String userInput = "";
int monthInt = 0;
String monthString, dayString,
yearString;
while (!userInput.equals("-1")) {
userInput = scnr.next();
if (userInput.contains(","))
{
monthString =
userInput.substring(0, userInput.indexOf(" "));
dayString =
userInput.substring(userInput.indexOf(" ") + 1,
userInput.indexOf(", "));
yearString =
userInput.substring(userInput.indexOf(", ") + 1,
userInput.length());
monthInt =
getMonthAsInt(monthString);
System.out.println(monthInt + "/" + dayString + "/" +
yearString);
}
}
}
}
I put this in and end up getting this error
message:
Exception in thread "main"
java.lang.StringIndexOutOfBoundsException: begin 0, end -1, length
2
at
java.base/java.lang.String.checkBoundsBeginEnd(String.java:3319)
at java.base/java.lang.String.substring(String.java:1874)
at DateParser.main(DateParser.java:62)
Can I get some help in correcting the problem and why it is
saying that?
Complete main() to read dates from input, one date per line. Each date's format must be as follows: March 1, 1990. Any date not following that format is incorrect and should be ignored. Use the substring() method to parse the string and extract the date. The input ends with -1 on a line alone. Output each correct date as: 3/1/1990. Ex: If the input is: March 1, 1990 April 2 1995 7/15/20 December 13, 2003 -1 then the output is: 3/1/1990 12/13/2003 385370.2524666.ax3zay7
import java.util.Scanner;
public class DateParser {
public static int getMonthAsInt(String monthString)
{
int monthInt;
// Java switch/case statement
switch (monthString) {
case "January":
monthInt = 1;
break;
case "February":
monthInt = 2;
break;
case "March":
monthInt = 3;
break;
case "April":
monthInt = 4;
break;
case "May":
monthInt = 5;
break;
case "June":
monthInt = 6;
break;
case "July":
monthInt = 7;
break;
case "August":
monthInt = 8;
break;
case "September":
monthInt = 9;
break;
case "October":
monthInt =
10;
break;
case "November":
monthInt =
11;
break;
case "December":
monthInt =
12;
break;
default:
monthInt = 0;
}
return monthInt;
}
public static void main(String[] args) {
Scanner scnr = new Scanner(System.in);
String userInput = "";
int monthInt = 0;
String monthString, dayString,
yearString;
while (!userInput.equals("-1")) {
userInput = scnr.next();
if (userInput.contains(","))
{
monthString =
userInput.substring(0, userInput.indexOf(" "));
dayString =
userInput.substring(userInput.indexOf(" ") + 1,
userInput.indexOf(", "));
yearString =
userInput.substring(userInput.indexOf(", ") + 1,
userInput.length());
monthInt =
getMonthAsInt(monthString);
System.out.println(monthInt + "/" + dayString + "/" +
yearString);
}
}
}
}
I put this in and end up getting this error
message:
Exception in thread "main"
java.lang.StringIndexOutOfBoundsException: begin 0, end -1, length
2
at
java.base/java.lang.String.checkBoundsBeginEnd(String.java:3319)
at java.base/java.lang.String.substring(String.java:1874)
at DateParser.main(DateParser.java:62)
Can I get some help in correcting the problem and why it is
saying that?
Complete main() to read dates from input, one date per line. Each date's format must be as follows: March 1, 1990. Any date not following that format is incorrect and should be ignored. Use the substring() method to parse the string and extract the date. The input ends with -1 on a line alone. Output each correct date as: 3/1/1990. Ex: If the input is: March 1, 1990 April 2 1995 7/15/20 December 13, 2003 -1 then the output is: 3/1/1990 12/13/2003 385370.2524666.ax3zay7