为什么在while循环后没有打印出来?

时间:2014-12-22 00:03:26

标签: java loops while-loop println

我正在写一个简单的银行应用程序。在我的程序中,我使用了while循环。如果用户输入错误的输入,它将重新提示再次输入。

现在问题是我在循环后无法编写任何system.out.print语句。它始终显示错误(说: 无法访问的声明 ),最终该行无法打印出来。

我该如何修复?

[我需要使用system.out.print的原因,因为我想要打印用户输入的所有信息。]

我正在进行的计划:

 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);

    }

}

3 个答案:

答案 0 :(得分:3)

当您调用System.exit时,整个程序退出并终止该过程。相反,您可以将else语句替换为:

else { break; }

这将打破当前循环,其余语句将被打印。关键字break只是打破了循环

答案 1 :(得分:1)

你有一个while (true)循环 - 一个无限的循环,除非循环中的某些内容突然出现。唯一突破循环的行是System.exit(0),它将完全结束你的程序。因此,在循环之后无法访问代码。

如果您打算在else子句中退出循环,请使用break语句而不是退出程序。

但请注意,if条件永远不会成立。

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

accNum永远不会小于零大于10。

你需要弄清楚你真正想要检查的条件。

答案 2 :(得分:1)

条件

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

永远无法实现,数字不可能是负数且同时> 10; System.exit(0)将始终在第一个循环中被调用。

当你调用System.exit(0)时,你退出程序而不是循环,因此你永远不会达到你所说的语句。

你应该使用

break;

或者如果你想要更多声望,请在while(条件)中设置正确的条件...尽量不要习惯使用break;