2012-09-23 78 views
1

我有一個小程序正在處理中。我只是在我的代碼中加入了一個try catch,除了一件事外,一切似乎都在起作用。我將在下面發佈我的代碼...正如你可以在我的代碼中看到我的try catch語句,它告訴程序去檢查異常處理的checkNumber方法。我一直在這部分得到一個錯誤......異常處理給我帶來麻煩

if (input == 5){ 
} 

輸入不斷強調紅色,並說「不兼容的操作數類型的掃描儀和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(); 
    } 
} 

類銀行主要2

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!"); 
     } 
    } 
} 

回答

1

您的變量inputScanner的一個對象,它是全局聲明的,將用於方法checknumber()5int。因此它們是不兼容的類型。

相同的聲明適用於方法query(),因爲對於查詢,您已經在本地定義了一個變量input,該變量的類型爲double

你應該寫的其實是什麼

if(input.nextInt() == 5){} 
+0

啊非常感謝,另外一個快速的問題......如果我想我的程序說...如果用戶輸入的數量< or >超過5則錯誤會出現,但如果是== 5,那麼他們是好的? –

+0

我不確定你問了什麼,但你的功能現在丟棄不是5的東西,只處理5,所以看起來很好。 –

+0

對不起,讓我問這個,現在當我把這個代碼,你告訴我使用它要求我輸入數字兩次,然後檢查它是否有效,例如之前的輸出只是..「請輸入一個卡號5位數字「然後我會輸入它,該程序現在會繼續它說」請輸入一個卡號5位數「,然後我鍵入它在544432,然後按回車,什麼也沒有發生,所以我再次輸入它544432和然後按回車,它說無效的號碼 –