Кто-нибудь знает, почему мой код печатает первые 3 оператора println одновременно?В этом случае, когда пользователь выбирает создание нового Портфолио, он запрашивает имя пользователя и dob сразу, вместо того, чтобы ждать первого ввода.То же самое происходит, когда пользователь выбирает создание новой политики.Есть идеи?
import java.text.DateFormat;//import Statements
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.*;
public class Menu
{
public static void main(String[]args)//main class
{
String StringDate; //Code Implemented to convert user String input to Calendar Format
DateFormat dateFormat = new SimpleDateFormat("DD/MM/YYYY", Locale.ENGLISH);
Calendar newDates = Calendar.getInstance();
Calendar newsDate = Calendar.getInstance();
Calendar neweDate = Calendar.getInstance();
Calendar newDateCreated = Calendar.getInstance();
String newName;//menu class specific variables declared
String newID; //These variables will be used to construct new policies and portfolios
String newPolicyNum;
String newPolicyType;
String newStatus;
String newPolicyName;
Double newDailyRate;
ArrayList<Portfolio> Portfolios = new ArrayList<Portfolio>();
ArrayList<Policy> Policies = new ArrayList<Policy>();
Scanner keyboard = new Scanner(System.in);//Scanner
int menuChoice;//int to allow user input to navigate menu system
do//do loop to run main menu
{
System.out.println(" --------------------Welcome to Insurance World------------------- ");
System.out.println(" ----------Insurance That's Truely 'Out Of This World'------------ ");
System.out.println(" |_________________________________________________________________|");
System.out.println("1)| Create An Insurance Portfolio |");
System.out.println(" |-----------------------------------------------------------------|");
System.out.println("2)| Amend Portfolio Details |");
System.out.println(" |-----------------------------------------------------------------|");
System.out.println("3)| Display a Portfolio |");
System.out.println(" |-----------------------------------------------------------------|");
System.out.println("4)| Create An Insurance Policy |");
System.out.println(" |-----------------------------------------------------------------|");
System.out.println("5)| Cancel A Policy |");
System.out.println(" |-----------------------------------------------------------------|");
System.out.println("6)| Display a Policy |");
System.out.println(" |-----------------------------------------------------------------|");
System.out.println("7)| Exit Program |");
System.out.println(" |_________________________________________________________________|");
menuChoice = keyboard.nextInt();//menu input
if (menuChoice == 1) //create a portfolio
{
int j = 1;
for(int i = 0; i < j; i++) //counter is declared
{
//Portfolio initialised
System.out.println("Please Enter The Name of The Portfolio Holder: ");
newName=keyboard.nextLine();
System.out.println("Your ID Number is: " + i);
newID = " " + i;
System.out.println("Please Enter The DOB of The Portfolio Holder(DD/MM/YYYY): ");
StringDate=keyboard.nextLine();
Portfolio temp = new Portfolio( newID, newName, newDates );
temp.setNumPolicies(0);
temp.setDOB(newDates.getInstance());
temp.setDateCreated(newDateCreated);
Portfolios.add(temp);
System.out.println("Your Portfolio Will Look Like This: ");
temp.displayPortfolio();
}
}
else if(menuChoice == 2)
{
//amend portfolio details
int i;
System.out.println("Please Enter The ID Number Of The Portfolio You Wish To Amend: ");
i=keyboard.nextInt();
Portfolios.get(i);
int amendChoice;
System.out.println("What do you want to Change? ");
System.out.println("1) Name of Portfolio Holder ");
System.out.println("2) Date Of Birth of Portfolio Holder ");
System.out.println("3) ID of Portfolio ");
System.out.println("4) Exit Program ");
amendChoice=keyboard.nextInt();//user input
if(amendChoice == 1)//update Portfolio name
{
System.out.println("Please Enter the Updated Name of the Portfolio Holder: ");
newName=keyboard.nextLine();
Portfolios.get(i).setName(newName);
System.out.println("Your New Portfolio Will Look Like This: ");
Portfolios.get(i).displayPortfolio();
}
else if(amendChoice == 2)//update portfolio dob
{
System.out.println("Please Enter the Updated DOB of the Portfolio Holder: ");
StringDate=keyboard.nextLine();
Portfolios.get(i).setDOB(newDates.getInstance());
System.out.println("Your New Portfolio will Look Like This: ");
Portfolios.get(i).displayPortfolio();
}
else if(amendChoice == 3)//update portfolio id
{
System.out.println("Please Enter the Updated ID of the Portfolio: ");
newID=keyboard.nextLine();
Portfolios.get(i).setId(newID);
System.out.println("Your New Portfolio Will Look Like This: ");
Portfolios.get(i).displayPortfolio();
}
else if(amendChoice == 4)//exit amend menu
{
System.out.println("Exiting Menu");
}
else//validation
{
System.out.println("The Number You Entered isn't a Valid Choice");
}
}
else if(menuChoice == 3)//display portfolio details
{
System.out.println("Please Enter the ID of the Portfolio you wish to View: ");
int i = keyboard.nextInt();
Portfolios.get(i).displayPortfolio();
}
else if(menuChoice == 4)//create a new policy
{
int j = 1;
for(int i = 0; i < j; i++)
{
System.out.println("Please Enter the Name of the Policy Holder: ");
newPolicyName=keyboard.nextLine();
newPolicyNum = " " + i;
newStatus = "PENDING";
System.out.println("Please Enter Your DoB (DD/MM/YYYY): ");
StringDate = keyboard.nextLine();
System.out.println("Please Enter The Date You Want Your Policy To Start (DD/MM/YYYY): ");
StringDate = keyboard.nextLine();
System.out.println("Please Enter The Date You Want Yourt Policy To End (DD/MM/YYYY): ");
StringDate = keyboard.nextLine();
System.out.println("Please Enter Your Portfolio ID: ");
int p = keyboard.nextInt();
int subMenuChoice;//Menu to Choose policy type
System.out.println("Please Choose The type of Policy You Want: ");
System.out.println("1) Motor Insurance Policy");
System.out.println("2) Home Insurance Policy");
System.out.println("3) Mobile Phone Insurance Policy");
System.out.println("4) Travel Insurance Policy");
subMenuChoice=keyboard.nextInt();
if(subMenuChoice==1)
{
newPolicyType = "Motor Insurance";//Policy type set
System.out.println("Please Enter the Registration Number of your Car: ");
String newRegNum = keyboard.nextLine();//newRegNum initialised
System.out.println("Please Enter The Model of Your Car: ");
String newModel = keyboard.nextLine();//newModel initialised
System.out.println("Please Enter The Value Of Your Car: ");
double newValue = keyboard.nextDouble();//newValue initialised
newDailyRate = 0.0;
Policy temp = new MotorPolicy(newRegNum, newModel, newValue, newPolicyNum, newPolicyName, newDates, newsDate, neweDate, newPolicyType, newDailyRate);//Policy initialised as a Motor Policy
temp.setPortfolio(Portfolios.get(p));//new Policy is given a protfolio
Policies.add(temp);//Policy added to Policy array
System.out.println("We Will Calculate Your Motor Insurance Premium!");
temp.setPremium(((MotorPolicy) temp).calcMotorPremium(newsDate, neweDate, newValue));//policy premium calculated and stored
System.out.println("We Calculated Your Premium to Be: £" + temp.getPremium());
temp.setDailyRate(temp.getPremium()/365);//daily rate set
temp.setStatus("ACTIVE");
}
else if(subMenuChoice==2)
{
newPolicyType = "Home Insurance";//Policy type set
System.out.println("Please Enter the type of Property you wish to insure (bungalow, semi-detached etc): ");
String newPropType = keyboard.nextLine();//newPropType initialised
System.out.println("Please Enter The Postcode of the Property ");
String newPostcode = keyboard.nextLine();//newPostcode initialised
System.out.println("Please Enter The Value Of Your Property: ");
double newValue = keyboard.nextDouble();//newValue initialised
newDailyRate = 0.0;
Policy temp = new HomePolicy(newPropType, newPostcode, newValue, newPolicyNum, newPolicyName, newDates, newsDate, neweDate, newPolicyType, newDailyRate);//new Policy initialised as a Home Policy
temp.setPortfolio(Portfolios.get(p));//new Policy is given a protfolio
Policies.add(temp);//Policy added to Policy array
System.out.println("We Will Calculate Your Home Insurance Premium!");
temp.setPremium(((HomePolicy) temp).calcHomePremium(newsDate, neweDate, newValue));
System.out.println("We Calculated Your Premium to Be: £" + temp.getPremium());
temp.setDailyRate(temp.getPremium()/365);
temp.setStatus("ACTIVE");
}
else if(subMenuChoice==3)
{
newPolicyType = "Mobile Phone Insurance";
System.out.println("Please Enter The Model of the Phone ");
String newModel = keyboard.nextLine();
System.out.println("Please Enter The Value Of Your Phone: ");
double newValue = keyboard.nextDouble();
newDailyRate = 0.0;
Policy temp = new MobilePhonePolicy(newValue, newModel, newPolicyNum, newPolicyName, newDates, newsDate, neweDate, newPolicyType, newDailyRate);//new Policy initialised as a Home Policy
temp.setPortfolio(Portfolios.get(p));//new Policy is given a protfolio
Policies.add(temp);//Policy added to Policy array
System.out.println("We Will Calculate Your Mobile Phone Insurance Premium!");
temp.setPremium(((MobilePhonePolicy) temp).calcMobilePhonePremium(newsDate, neweDate, newValue));
System.out.println("We Calculated Your Premium to Be: £" + temp.getPremium());
temp.setDailyRate(temp.getPremium()/365);
temp.setStatus("ACTIVE");
}
else if(subMenuChoice==4)
{
newPolicyType = "Travel Insurance";
System.out.println("Please Enter A Destination from the List Below ");
System.out.println("Europe - £10 per Day");
System.out.println("North America - £12 per Day");
System.out.println("South America - £14 per Day");
System.out.println("Asia - £15");
String newDestination = keyboard.nextLine();
newDailyRate = 0.0;
Policy temp = new TravelPolicy(newDestination, newPolicyNum, newPolicyName, newDates, newsDate, neweDate, newPolicyType, newDailyRate);//new Policy initialised as a Home Policy
temp.setPortfolio(Portfolios.get(p));//new Policy is given a protfolio
Policies.add(temp);//Policy added to Policy array
System.out.println("We Will Calculate Your Mobile Phone Insurance Premium!");
temp.setPremium(((TravelPolicy) temp).calcTravelPremium(newsDate, neweDate, newDestination));
System.out.println("We Calculated Your Premium to Be: £" + temp.getPremium());
temp.setDailyRate(temp.getPremium()/365);
temp.setStatus("ACTIVE");
}
else
{
System.out.println("The Number You Entered Doesn't Correspond To A Choice!");//Validation for policy choice menu
}
}
}
else if(menuChoice == 5)
{
//cancel policy
int i;
System.out.println("Please Enter the ID of The Policy You Want To Cancel: ");
i = keyboard.nextInt();
System.out.println("Enter the Date you want to cancel your policy: ");
StringDate = keyboard.nextLine();
Policies.get(i).cancelPolicy(neweDate);
Policies.get(i).setStatus("CANCELLED");
}
else if(menuChoice == 6)
{
//display policy
int i;
System.out.println("Please Enter The Policy Number of The Policy You Want to View: ");
i = keyboard.nextInt();
Policies.get(i).toString();
}
else
{
System.out.println("The Input you entered doesn't correspond to a choice!");//validation method
}
}
while(menuChoice!=7);//exit condition
{
System.out.println("Exiting Program!");
}
}
}