Java 异常处理给我带来麻烦
我有一个小程序,我正在工作。我只是在我的代码中加入了一个try-catch,除了一件事之外,所有的东西似乎都在工作。我将在下面发布我的代码。。。正如您在代码中看到的try-catch语句,它告诉程序转到checkNumber方法进行异常处理。我一直在这方面出错Java 异常处理给我带来麻烦,java,exception,exception-handling,Java,Exception,Exception Handling,我有一个小程序,我正在工作。我只是在我的代码中加入了一个try-catch,除了一件事之外,所有的东西似乎都在工作。我将在下面发布我的代码。。。正如您在代码中看到的try-catch语句,它告诉程序转到checkNumber方法进行异常处理。我一直在这方面出错 if (input == 5){ } 输入保持红色下划线,并显示“不兼容的操作数类型scanner和int” 不确定问题是什么…或者如何解决…这是我的代码 import java.util.ArrayList; import java.
if (input == 5){
}
输入保持红色下划线,并显示“不兼容的操作数类型scanner和int”
不确定问题是什么…或者如何解决…这是我的代码
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 (input == 5)
{
System.out.println("");
}
else
throw new invalidNumber("invalid number");
}
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:
import java.util.ArrayList;
import java.util.Scanner;
public class BankMainPart2 {
public static void loginCard(ArrayList<Integer> cardNum){
BankMain main = new BankMain();
AccountMain main3 = new AccountMain();
Scanner logNum = new Scanner(System.in);
int loginInput = logNum.nextInt();
if (cardNum.contains(loginInput)) {
main3.selectAccount();
}
else {
System.out.println("Sorry, that pin number is incorrect!");
}
}
}
if(input.nextInt() == 5){}