Simon
Simon

Reputation: 75

Why nothing gets printed after while loop?

I am writing a simple bank application. In my program I have used a while loop. In case a user enters wrong input it will re-prompt to enter again.

Now the problem is I am not able to write any system.out.print statement after the loop. It always shows error (says: unreachable statement), and eventually the line doesn't get printed out.

HOW CAN I FIX THIS?

[The reason I need to use system.out.print because I want to print all the info the user has input.]

The program I am working on:

 package bankapplication;

import java.util.Scanner;

public class BankApplication {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);

        System.out.println("WELCOME TO OUR BANK!\n\nPlease give all the inofrmation correctly.");

        System.out.println("Enter your name: ");
        String name = input.nextLine();
        System.out.println("");

        System.out.println("Enter your SSN: ");
        String ssn = input.next();
        System.out.println("");

        System.out.println("Enter your Address: ");
        String address = input.next();
        System.out.println("");

        System.out.println("Enter your telephone nr: ");
        String teleNum = input.next();
        System.out.println("");

        while (true) {
            System.out.println("Choose an account number for you (Between 5 and 10 positive numbers): ");
            int accNum = input.nextInt();
            System.out.println("");
            if (accNum < 0 && accNum > 10 && accNum < 6) {
                System.out.println("Invalid choise!");
            } else {
                System.exit(0);

            }
        }

        System.out.println("Congratulation! Your new account has been created!");
        System.out.println("The following is your account info:\n");
        System.out.println("name: " + name + "SSN: " + ssn + "Address: " + address + "Tele. Num: " + teleNum + "Acc num: " + accNum);

    }

}

Upvotes: 0

Views: 2324

Answers (3)

wassgren
wassgren

Reputation: 19231

When you invoke System.exit the entire program exits and the process is terminated. Instead you could replace the else statement with:

else { break; }

That will break the current loop and the rest of the statements will be printed. The keyword break simply breaks the loop.

Upvotes: 3

vlatkozelka
vlatkozelka

Reputation: 999

the condition

(accNum < 0 && accNum > 10 && accNum < 6)

can never be acheived , there is no way a number can be negative and >10 at the same time...the System.exit(0) will always be called on first loop.

That and when u call System.exit(0) you are exiting the program not the loop, therefor you will never reach the statement you are talking about .

you should either use

break;

or if you would like more prestige, put the right condition in the while(condition) ... try not to get used to using break ;

Upvotes: 1

khelwood
khelwood

Reputation: 59185

You have a while (true) loop - a loop which is infinite unless something in the loop breaks out of it. The only line you have that breaks out of the loop is System.exit(0), which will end your program entirely. Therefore it is impossible to reach the code after your loop.

If you mean to break out of the loop in your else clause, use a break statement instead of exiting the program.

Note however that your if condition will never be true.

if (accNum < 0 && accNum > 10 && accNum < 6) {

accNum can never be less than zero and greater than 10.

You need to figure out what condition you actually want to check.

Upvotes: 1

Related Questions