Jared
Jared

Reputation: 159

Asking Java to go back to a specific statement

I am currently writing a program, and I need the program to return to a specific statement. I have tried doing a loop, but it was very complicated. Is there an easier way?

(If the user choose yes, rerun the program. If no, end the program.)

public class CA_1316855_P3 {

    public static void main(String[] args) {
        //Variables
        char Destination, JobType, Currency;
        double ExchangeRate = 0, Maximum = 0, Ammount = 0, NewExchangeRate, NewCharge;
        int Charge = 0;
        String ID, JobTitle = null, Name, Nationality, Mobile, CurrencyTitle = null, DestinationTitle = null;
        int BLANK = 0;
        int Count_u = 0;
        int Count_y = 0;
        int Count_p = 0;
        int Count_i = 0;

        //Destination
        while (BLANK == 0) {
            System.out.println("\t\t\t          ---------------------------------------------");
            System.out.println("\t\t\t\t\t Welcome to Transferring System");
            System.out.println("\t\t\t          ---------------------------------------------");
            System.out.println(" Press u for Transferring to USA \n Press y for transferring to Yemen \n Press p for Transferring to Pakistan");
            System.out.println(" Press i for Transferring to India \n Press n for new destination country");
            System.out.print("Enter the Choice: ");
            Scanner input1 = new Scanner(System.in);
            Destination = input1.next().charAt(0);
            while (Destination != '*')
                if (Destination == 'u' ||
                    Destination == 'U' ||
                    Destination == 'y' ||
                    Destination == 'Y' ||
                    Destination == 'p' ||
                    Destination == 'P' ||
                    Destination == 'i' ||
                    Destination == 'I' ||
                    Destination == 'n' ||
                    Destination == 'N') {

                    if (Destination == 'u' || Destination == 'U') {
                        ExchangeRate = 0.267;
                        Count_u++;
                        DestinationTitle = "United States";
                    } else if (Destination == 'y' || Destination == 'Y') {
                        DestinationTitle = "Yemen";
                        Count_y++;
                        ExchangeRate = 57.300;
                    } else if (Destination == 'p' || Destination == 'P') {
                        DestinationTitle = "Pakistan";
                        Count_p++;
                        ExchangeRate = 28.367;
                    } else if (Destination == 'i' || Destination == 'I') {
                        DestinationTitle = "India";
                        Count_i++;
                        ExchangeRate = 17.417;
                    } else if (Destination == 'n' || Destination == 'N') {
                        System.out.print("Enter the name of destination country: ");
                        Scanner input3 = new Scanner(System.in);
                        String NewDestinationName = input3.next();
                        System.out.print("Enter the Exchange Rate between SAR and " + NewDestinationName + " Currency: ");
                        Scanner input4 = new Scanner(System.in);
                        NewExchangeRate = input4.nextDouble();
                    }
                    break;
                } else {
                    System.out.print("***Wrong Selection !!*** \nEnter choice again:");
                    Destination = input1.next().charAt(0);
                }


            //Job Type
            System.out.println("\t\t------------\n\t\t  Job Type \n\t\t------------ ");
            System.out.println(" Press 0 for ordinary employee \n Press 1 for academician employee \n Press 2 for medical employee");
            System.out.print("Enter the Choice: ");
            Scanner input2 = new Scanner(System.in);
            JobType = input2.next().charAt(0);
            while (JobType != '*') {
                if (JobType == '0' || JobType == '1' || JobType == '2') {
                    if (JobType == '0') {
                        JobTitle = "Ordinary";
                        Maximum = 15000;
                    } else if (JobType == '1') {
                        JobTitle = "Academician";
                        Maximum = 50000;
                    } else if (JobType == '2') {
                        JobTitle = "Medical";
                        Maximum = 80000;
                    }
                    break;
                } else {
                    System.out.println("***Wrong Selection !!*** \nEnter choice again:");
                    JobType = input2.next().charAt(0);
                }
            }


            //Currency

            System.out.println("\t\t------------\n\tType of Currency to be received \n\t\t------------ ");
            System.out.println(" Press S for Saudi Riyal \n Press L for local Currency");
            System.out.print("Enter The Choice: ");
            Scanner input5 = new Scanner(System.in);
            Currency = input5.next().charAt(0);
            while (Currency != '*') {
                if (Currency == 's' || Currency == 'l' || Currency == 'S' || Currency == 'L') {
                    break;
                } else {
                    System.out.println("***Wrong Selection !!*** \nEnter choice again:");
                    Currency = input5.next().charAt(0);
                }
            }

            System.out.print("Enter the amount to be transferred: ");
            Scanner input6 = new Scanner(System.in);
            Ammount = input6.nextDouble();

            if (Ammount > Maximum) {

                System.exit(0);
            } else if (Ammount <= 10000 && (Destination == 'u' || Destination == 'U') && Currency == 's') {
                Charge = 40;
                ExchangeRate = 1;
                CurrencyTitle = "SAR";
            } else if (Ammount < 10000 && (Destination == 'u' || Destination == 'U') && Currency == 'l') {
                Charge = 25;
                CurrencyTitle = "USD";
            } else if (Ammount > 10000 && Ammount < 80000 && (Destination == 'u' || Destination == 'U') && Currency == 's') {
                Charge = 100;
                CurrencyTitle = "SAR";
                ExchangeRate = 1;
            } else if (Ammount > 10000 && Ammount < 80000 && (Destination == 'u' || Destination == 'U') && Currency == 'l') {
                Charge = 70;
                CurrencyTitle = "USD";
            } else if (Ammount < 10000 && (Destination == 'y' || Destination == 'Y') && Currency == 's') {
                Charge = 20;
                CurrencyTitle = "SAR";
                ExchangeRate = 1;
            } else if (Ammount < 10000 && (Destination == 'y' || Destination == 'Y') && Currency == 'l') {
                Charge = 10;
                CurrencyTitle = "YER";
            } else if (Ammount > 10000 && Ammount < 80000 && (Destination == 'y' || Destination == 'Y') && Currency == 's') {
                Charge = 50;
                CurrencyTitle = "SAR";
                ExchangeRate = 1;
            } else if (Ammount > 10000 && Ammount < 80000 && (Destination == 'y' || Destination == 'Y') && Currency == 'l') {
                Charge = 30;
                CurrencyTitle = "YER";
            } else if (Ammount < 10000 && (Destination == 'p' || Destination == 'P') && Currency == 's') {
                Charge = 30;
                CurrencyTitle = "SAR";
                ExchangeRate = 1;
            } else if (Ammount < 10000 && (Destination == 'p' || Destination == 'P') && Currency == 'l') {
                Charge = 20;
                CurrencyTitle = "PKR";
            } else if (Ammount > 10000 && Ammount < 80000 && (Destination == 'p' || Destination == 'P') && Currency == 's') {
                Charge = 80;
                CurrencyTitle = "SAR";
                ExchangeRate = 1;
            } else if (Ammount > 10000 && Ammount < 80000 && (Destination == 'p' || Destination == 'P') && Currency == 'l') {
                Charge = 55;
                CurrencyTitle = "PKR";
            } else if (Ammount < 10000 && (Destination == 'i' || Destination == 'I') && Currency == 's') {
                Charge = 25;
                CurrencyTitle = "SAR";
                ExchangeRate = 1;
            } else if (Ammount < 10000 && (Destination == 'i' || Destination == 'I') && Currency == 'l') {
                Charge = 15;
                CurrencyTitle = "INR";
            } else if (Ammount > 10000 && Ammount < 80000 && (Destination == 'i' || Destination == 'I') && Currency == 's') {
                Charge = 70;
                CurrencyTitle = "SAR";
                ExchangeRate = 1;
            } else if (Ammount > 10000 && Ammount < 80000 && (Destination == 'i' || Destination == 'I') && Currency == 'l') {
                Charge = 50;
                CurrencyTitle = "INR";
            } else if (Destination == 'n' || Destination == 'N') {
                System.out.print("Enter the charges: ");
                Scanner input9 = new Scanner(System.in);
                NewCharge = input9.nextDouble();
                System.out.print("Enter the currency: ");
                Scanner input12 = new Scanner(System.in);
                CurrencyTitle = input12.next();
            }

            System.out.print("Enter the ID Number: ");
            Scanner input7 = new Scanner(System.in);
            ID = input7.next();
            System.out.print("Enter the Name: ");
            Scanner input8 = new Scanner(System.in);
            Name = input8.next();
            System.out.print("Enter the Nationality: ");
            Scanner input10 = new Scanner(System.in);
            Nationality = input10.next();
            System.out.print("Enter the Mobile Number: ");
            Scanner input11 = new Scanner(System.in);
            Mobile = input11.next();

            //Printing the Bill
            System.out.println("\n\n\n\n\t\t\t\t------------------------------------------");
            System.out.println("\t\t\t\t\t The current Transaction");
            System.out.println("\t\t\t\t------------------------------------------");
            System.out.println("Sender: " + Name + "\t\t\t Destination: " + DestinationTitle);
            System.out.println("Job Type: " + JobTitle + "\t\t\t Nationality: " + Nationality + "\t\t Mobile: " + Mobile);
            System.out.println("\t\t\t The Original Ammount: " + Ammount);
            System.out.println("\t\t\t The Recieved Ammount: " + Ammount * ExchangeRate);
            System.out.println("\t\t\t The Total Amount Cost: " + ((int) (Ammount) + (Charge)));
            int reply = JOptionPane.showConfirmDialog(null, "Would you like to do another transaction ?", "Question.", JOptionPane.YES_NO_OPTION);
            if (reply == JOptionPane.YES_OPTION) {
                continue;
            } else if (reply == JOptionPane.NO_OPTION && Count_u >= 1 && Count_y >= 1 && Count_p >= 1 && Count_i >= 1) {
                System.exit(0);
            } else {
                JOptionPane.showMessageDialog(null, "You need to perform at least one transaction for each country.");
                continue;
            }

        }
    }
}

Upvotes: 2

Views: 238

Answers (3)

MariuszS
MariuszS

Reputation: 31595

Try with extract method pattern. This make this mess readable.

After extraction, you can copy paste only important part to stackoverflow for help and achieve go back jump will be much easier.

public class CA_1316855_P3 {

    public static void main(String[] args) {

        int reply;

        do {

            businessLogic();

            reply = askUser();

        } while (userWantRepeat(reply));

    }
}

Upvotes: 3

Aniket Thakur
Aniket Thakur

Reputation: 69035

One possible solution to your problem would be to use switch statement inside a while loop running infinitely (break when you are done).

Upvotes: 1

kajacx
kajacx

Reputation: 12959

There is no goto or jump in Java, if you want to do this, you have to write while(true) { ... } or do { ... } while(false); and implement the jumps by continue; and break;

Upvotes: 2

Related Questions