Почему мои Println заявления печатаются все сразу? - PullRequest
0 голосов
/ 10 мая 2018

Кто-нибудь знает, почему мой код печатает первые 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!");
        }
    }
}
...