2012-09-22 221 views
1

我正在建立一個ATM,我在第二課中有一個方法,假設檢查登錄引腳以查看它是否存在於ArrayList中。雖然我是新來的Java,我不知道如何做到這一點?我正在嘗試使用arraylistname.contains,但我不確定這是否正確。我會發布我的課程。如何檢查數組是否包含數字

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

public class BankMain { 
    ArrayList<Integer> cardNum = new ArrayList<Integer>(); 
    public static void main(String[] args) { 
     // TODO Auto-generated method stub 
     BankMain main = new BankMain(); 
     main.menu(); 
    } 

    public void cardNumbers(){ 
     Scanner cards = new Scanner(System.in); 
     Scanner input = new Scanner(System.in); 
     Scanner keyboard = new Scanner(System.in); 

    System.out.println("Please select a 5 digit card number"); 
     cardNum.add(input.nextInt()); 

     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("What Would you like to do today?"); 
     System.out.println(); 
     System.out.println("Create Account = 1"); 
     System.out.println("Login = 2"); 
     System.out.println("Exit = 3"); 
     query(); 
    } 

    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."); 
      main2.loginCard(cardNum); 
     }else if (input == 1){ 
      cardNumbers(); 
     }else if (input == 3){ 
      System.out.println("Thank you, have a nice day!"); 
      System.exit(0); 
     } 
    } 
} 

而且,這裏是我的第二課堂,與登錄方法:

import java.util.ArrayList; 

public class BankMainPart2 { 
    public static void loginCard(ArrayList<Integer> cardNum){ 
     if (cardNum.contains(0)) { 
     } 
    } 
} 

回答

4

是的,它可以工作,但讓我們來揭開幕布背後的男人。

發生了什麼叫做autoboxing。你想要使用的方法需要一個對象類型。 int不是的對象類型,但是Integer。實際上,所有原始類型都有一個與它們相關的盒裝對象。

Java會自動將您的圖元轉換爲裝箱對象。由於Java內部的某些內部組件可以快速鬆散地播放,而且自動裝箱只是簡單的奇怪,所以在使用它的地方和時間要小心。

0

是的,它工作正常,如果你是在int(基本類型)做的查找,這是你的情況。

如果您通過傳遞可變對象進行查找,則可能會給出錯誤結果,除非您覆蓋hashcode()equals()方法。

0
cardNum.contains(0) 
        ^^^^ //It should be Card number entered by user. 

它的工作原理,因爲autoboxingMakoto's回答說。

相關問題