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

3 回答 3

4

是的,它有效,但让我们在这里揭示幕后的男人。

发生的事情称为自动装箱。您要使用的方法需要对象类型。 int不是对象类型,而是. 事实上,所有原始类型都有一个与之关联的装箱对象。Integer

Java 会很高兴地自动将您的原语转换为装箱对象。这可能会变得很冒险,因为 Java 中的一些内部机制可以快速而松散地运行,而且Short自动装箱只是很奇怪,所以在何时何地使用它时要小心。

于 2012-09-22T04:23:02.820 回答
0

是的,如果您正在查找int(原始类型),它工作正常,这是您的情况。

如果您通过传递可变对象进行查找,除非您覆盖hashcode()equals()方法,否则这可能会给您错误的结果。

于 2012-09-22T04:15:03.400 回答
0
  cardNum.contains(0)
                   ^^^^   //It should be Card number entered by user.

它之所以有效,是因为autoboxingMakoto's答案中所述。

于 2012-09-22T04:28:02.140 回答