Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 异常处理不起作用_Java_Exception_Exception Handling - Fatal编程技术网

Java 异常处理不起作用

Java 异常处理不起作用,java,exception,exception-handling,Java,Exception,Exception Handling,我做了一个自动取款机程序。我有一个try-catch,它会要求用户输入他们的pin码。pin码必须为5位数字。因此,异常将检查是否为5位数字,但异常处理不起作用。不管我输入什么号码,它总是说无效号码 这是我的代码try-catch在程序的顶部,异常处理checkNumber在程序的底部 import java.util.ArrayList; import java.util.Scanner; public class BankMain { private double availabl

我做了一个自动取款机程序。我有一个try-catch,它会要求用户输入他们的pin码。pin码必须为5位数字。因此,异常将检查是否为5位数字,但异常处理不起作用。不管我输入什么号码,它总是说无效号码

这是我的代码try-catch在程序的顶部,异常处理checkNumber在程序的底部

import java.util.ArrayList;
import java.util.Scanner;

public class BankMain
{
    private double availableBal = 80;
    private double totalBal = 100;
    private double availableBal2 = 480;
    private double totalBal2 = 500;
    private double availableBal3 = 80;
    private double totalBal3 = 100;
    ArrayList<Integer> cardNum = new ArrayList<Integer>();
    static Scanner input = new Scanner(System.in);

    private String error; // String the error from the exception
    {
        error = "error";
    }

    public void cardNumbers()
    {

        Scanner cards = new Scanner(System.in);
        Scanner input = new Scanner(System.in);
        Scanner keyboard = new Scanner(System.in);

        try
        {

            System.out.println("Please select a 5 digit card number");

            cardNum.add(input.nextInt());
            checkNumber();

        }

        catch (invalidNumber err)
        {

            System.out.println("Caught Error: " + err.getError());
        }

        System.out.println("Thank you! You're card number is " + cardNum);

        System.out.println("Type 'c' to go back to main menu.");
        String value = keyboard.next();

        if (value.equalsIgnoreCase("c"))
        {
            menu();

        }

        else if (!keyboard.equals('c'))
        {

            System.out.println("Invalid Entry!");

        }

    }

    public void menu()
    {

        System.out.println("ATM Menu:");
        System.out.println();
        System.out.println("1 = Create Account");
        System.out.println("2 = Account Login");
        System.out.println("3 = Exit ATM");
        query();
    }

    public void startAtm()
    {
        menu();

    }

    public void drawMainMenu()
    {

        AccountMain main3 = new AccountMain();
        int selection;

        System.out.println("\nATM main menu:");
        System.out.println("1 - View account balance");
        System.out.println("2 - Withdraw funds");
        System.out.println("3 - Add funds");
        System.out.println("4 - Back to Account Menu");
        System.out.println("5 - Terminate transaction");
        System.out.print("Choice: ");
        selection = input.nextInt();

        switch (selection)
        {
        case 1:
            viewAccountInfo();
            break;
        case 2:
            withdraw();
            break;
        case 3:
            addFunds();
            break;
        case 4:
            AccountMain.selectAccount();
            break;
        case 5:
            System.out.println("Thank you for using this ATM!!! goodbye");
        }
    }

    public void viewAccountInfo()
    {
        System.out.println("Account Information:");
        System.out.println("\t--Total balance: $" + totalBal);
        System.out.println("\t--Available balance: $" + availableBal);
        drawMainMenu();
    }

    public void viewAccountInfo2()
    {
        System.out.println("Account Information:");
        System.out.println("\t--Total balance: $" + totalBal2);
        System.out.println("\t--Available balance: $" + availableBal2);
        drawMainMenu();
    }

    public void deposit(int depAmount)
    {
        System.out.println("\n***Please insert your money now...***");
        totalBal = totalBal + depAmount;
        availableBal = availableBal + depAmount;
    }

    public void checkNsf(int withdrawAmount)
    {
        if (totalBal - withdrawAmount < 0)
            System.out.println("\n***ERROR!!! Insufficient funds in you accout***");
        else
        {
            totalBal = totalBal - withdrawAmount;
            availableBal = availableBal - withdrawAmount;
            System.out.println("\n***Please take your money now...***");
        }
    }

    public void addFunds()
    {
        int addSelection;

        System.out.println("Deposit funds:");
        System.out.println("1 - $20");
        System.out.println("2 - $40");
        System.out.println("3 - $60");
        System.out.println("4 - $100");
        System.out.println("5 - Back to main menu");
        System.out.print("Choice: ");
        addSelection = input.nextInt();

        switch (addSelection)
        {
        case 1:
            deposit(20);
            drawMainMenu();
            break;
        case 2:
            deposit(40);
            drawMainMenu();
            break;
        case 3:
            deposit(60);
            drawMainMenu();
            break;
        case 4:
            deposit(100);
            drawMainMenu();
            break;
        case 5:
            drawMainMenu();
            break;
        }
    }

    public void withdraw()
    {
        int withdrawSelection;

        System.out.println("Withdraw money:");
        System.out.println("1 - $20");
        System.out.println("2 - $40");
        System.out.println("3 - $60");
        System.out.println("4 - $100");
        System.out.println("5 - Back to main menu");
        System.out.print("Choice: ");
        withdrawSelection = input.nextInt();

        switch (withdrawSelection)
        {
        case 1:
            checkNsf(20);
            drawMainMenu();
            break;
        case 2:
            checkNsf(40);
            drawMainMenu();
            break;
        case 3:
            checkNsf(60);
            drawMainMenu();
            break;
        case 4:
            checkNsf(100);
            drawMainMenu();
            break;
        case 5:
            drawMainMenu();
            break;
        }
    }

    public void query()
    {

        Scanner keyboard = new Scanner(System.in);
        double input = keyboard.nextInt();

        if (input == 2)
        {

            BankMainPart2 main2 = new BankMainPart2();

            System.out.println("Please enter your 5 digit card number.");
            BankMainPart2.loginCard(cardNum);

        }
        else if (input == 1)
        {

            cardNumbers();

        }

        else if (input == 3)
        {
            System.out.println("Thank you, have a nice day!");
            System.exit(0);

        }

    }

    public void checkingMenu()
    {

        AccountMain main3 = new AccountMain();
        int selection;

        System.out.println("\nATM main menu:");
        System.out.println("1 - View account balance");
        System.out.println("2 - Withdraw funds");
        System.out.println("3 - Add funds");
        System.out.println("4 - Back to Account Menu");
        System.out.println("5 - Terminate transaction");
        System.out.print("Choice: ");
        selection = input.nextInt();

        switch (selection)
        {
        case 1:
            viewAccountInfo2();
            break;
        case 2:
            withdraw();
            break;
        case 3:
            addFunds();
            break;
        case 4:
            AccountMain.selectAccount();
            break;
        case 5:
            System.out.println("Thank you for using this ATM!!! goodbye");
        }
    }

    private static void checkNumber() throws invalidNumber // run the check activation exception
    {
        if (String.valueOf(input).length() != 5)
        {
            throw new invalidNumber("invalid number");
        }
        else
        {

            System.out.println("Works!");
        }

    }

    public static void main(String args[])
    {
        BankMain myAtm = new BankMain();
        myAtm.startAtm();
    }
}
import java.util.ArrayList;
导入java.util.Scanner;
公共班克曼
{
专用双可用数据库=80;
私人双倍总余额=100;
专用双可用B L2=480;
私人双总BAL2=500;
专用双可用EBAL3=80;
私人双总BAL3=100;
ArrayList cardNum=新的ArrayList();
静态扫描仪输入=新扫描仪(System.in);
私有字符串错误;//从异常中提取错误字符串
{
error=“error”;
}
公共卡号码()
{
扫描仪卡=新扫描仪(System.in);
扫描仪输入=新扫描仪(System.in);
扫描仪键盘=新扫描仪(System.in);
尝试
{
System.out.println(“请选择一个5位数的卡号”);
add(input.nextInt());
checkNumber();
}
捕获(无效号码错误)
{
System.out.println(“捕获的错误:+err.getError());
}
System.out.println(“谢谢!您的卡号是”+cardNum);
System.out.println(“键入'c'返回主菜单”);
字符串值=键盘.next();
if(值相等信号情况(“c”))
{
菜单();
}
如果(!keyboard.equals('c'),则为else
{
System.out.println(“无效条目!”);
}
}
公共无效菜单()
{
System.out.println(“ATM菜单:”);
System.out.println();
System.out.println(“1=创建帐户”);
System.out.println(“2=帐户登录”);
System.out.println(“3=退出ATM”);
查询();
}
公共无效STARTAM()
{
菜单();
}
公共菜单()
{
AccountMain main 3=新AccountMain();
int选择;
System.out.println(“\nATM主菜单:”);
System.out.println(“1-查看账户余额”);
System.out.println(“2-提取资金”);
System.out.println(“3-添加资金”);
System.out.println(“4-返回帐户菜单”);
System.out.println(“5-终止交易”);
系统输出打印(“选择:”);
selection=input.nextInt();
开关(选择)
{
案例1:
viewAccountInfo();
打破
案例2:
撤回();
打破
案例3:
增加资金();
打破
案例4:
AccountMain.selectAccount();
打破
案例5:
System.out.println(“感谢您使用这个ATM!!!再见”);
}
}
public void viewcountinfo()
{
System.out.println(“账户信息:”);
System.out.println(“\t--总余额:$”+总余额);
System.out.println(“\t--可用余额:$”+可用余额);
DrawMain菜单();
}
public void viewAccountInfo2()
{
System.out.println(“账户信息:”);
System.out.println(“\t——总余额:$”+totalBal2);
System.out.println(“\t——可用余额:$”+availableBal2);
DrawMain菜单();
}
公共作废保证金(金额)
{
System.out.println(“\n***请立即插入您的钱…***”);
总余额=总余额+折旧金额;
可用余额=可用余额+折旧金额;
}
公共作废支票NSF(取款金额)
{
if(总余额-提取金额<0)
System.out.println(“\n***错误!!!您账户中的资金不足***”;
其他的
{
totalBal=totalBal-提款金额;
availableBal=availableBal—提款金额;
System.out.println(“\n***请立即取款…***”);
}
}
公共基金()
{
智力选择;
System.out.println(“存款资金:”);
系统输出打印项次(“1-20美元”);
系统输出打印项次(“2-40美元”);
系统输出打印项次(“3-60美元”);
系统输出打印项次(“4-100美元”);
System.out.println(“5-返回主菜单”);
系统输出打印(“选择:”);
addSelection=input.nextInt();
开关(添加选择)
{
案例1:
按金(20);
DrawMain菜单();
打破
案例2:
按金(40);
DrawMain菜单();
打破
案例3:
存款(60);
DrawMain菜单();
打破
案例4:
存款(100);
DrawMain菜单();
打破
案例5:
DrawMain菜单();
打破
}
}
公开撤回
{
智力选择;
System.out.println(“取款:”);
系统输出打印项次(“1-20美元”);
系统输出打印项次(“2-40美元”);
系统输出打印项次(“3-60美元”);
系统输出打印项次(“4-100美元”);
System.out.println(“5-返回主菜单”);
系统输出打印(“选择:”);
撤销选择=输入.nextInt();
开关(选择)
{
案例1:
国家科学基金会(20);
DrawMain菜单();
打破
案例2:
国家科学基金会(40);
DrawMain菜单();
打破
案例3:
nsf(60);
DrawMain菜单();
打破
案例4:
检查NSF(100);
DrawMain菜单();
打破
案例5:
DrawMain菜单();
打破
}
}
公共无效查询()
{
扫描仪键盘=新扫描仪(System.in);
    if (String.valueOf(input).length() != 5)
    {
        throw new invalidNumber("invalid number");
    }
    else
    {

        System.out.println("Works!");
    }
double input = keyboard.nextInt()
static Scanner input = new Scanner(System.in)
        try {
            System.out.println("Please select a 5 digit card number");
            cardNum.add(input.nextInt());
            checkNumber();
        } catch (invalidNumber err) {
            System.out.println("Caught Error: " + err.getError());
        }
private static void checkNumber() throws invalidNumber 
{
    if (String.valueOf(input).length() != 5) {
        throw new invalidNumber("invalid number");
    }
    else {
        System.out.println("Works!");
    }
}
    Scanner cards = new Scanner(System.in);
    Scanner input = new Scanner(System.in);
    Scanner keyboard = new Scanner(System.in);
    private static void checkNumber(int number) throws invalidNumber 
    {
        if (String.valueOf(number).length() != 5) {
            throw new invalidNumber("invalid number");
        }
        else {
            System.out.println("Works!");
        }
    }
        try {
            System.out.println("Please select a 5 digit card number");
            int number = input.nextInt();
            cardNum.add(number);
            checkNumber(number);
        } catch (invalidNumber err) {
            System.out.println("Caught Error: " + err.getError());
        }