如何检查数组是否包含数字

时间:2012-09-22 04:13:26

标签: java methods arraylist

我正在构建一个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)) {
        }
    }
}

3 个答案:

答案 0 :(得分:4)

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

正在发生的事情被称为autoboxing。要使用的方法需要对象类型。 int 是对象类型,但Integer 。实际上,所有原始类型都有一个与之关联的盒装对象。

Java会很乐意自动将您的基元转换为盒装对象。这可能会有点冒险,因为Java中的一些内部结构可以快速而松散地运行,而Short自动装箱只是很奇怪,所以在使用它的地方和时间都要小心。

答案 1 :(得分:0)

是的,如果你在int(原始类型)上进行查找,它就可以正常工作了。

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

答案 2 :(得分:0)

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

autoboxing答案中所述Makoto's而有效。