如何将用户输入与arraylist匹配

时间:2016-02-08 20:34:36

标签: java arraylist

package BankingSystem;

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

public class Bank {

  public static void main(String [] args){

      List<String> AccountList = new ArrayList<String>(); 
      AccountList.add("45678690");
      Scanner AccountInput = new Scanner(System.in);
      System.out.println("Hi whats your pin code?");
      AccountInput.nextLine();

      for  (int counter = 0; counter < AccountList.size(); counter++){  
          if (AccountInput.equals(AccountList.get(counter))){ //If Input = ArrayList number then display "hi"
              System.out.println("Hi");

          }
          else { //If not = to ArrayList then display "Incorrect"
              System.out.println("Incorrect");

          }
          }
      }
      }

嗨,在这里我试图将userInput与arrayList匹配,如果正确则显示“hi”如果不显示“不正确”,对于不正确的部分我是否要使用异常处理?以及如何使其与ArrayList编号匹配 - 45678690?

5 个答案:

答案 0 :(得分:1)

首先,您需要将用户的输入存储到某些字符串中,因为您目前还没有这样做。

您可以改为使用

,而不是使用计数器并遍历列表
AccountList.contains(the string variable assigned to AccountInput)

如果它是假的,那么条目就不存在,否则它就在那里。您可能希望在此方案中使用的异常处理是处理用户输入字母而不是数字。

答案 1 :(得分:1)

.nextLine()返回一个需要分配给变量的字符串.... 然后使用.contains()方法将变量与arraylist中的元素进行比较...... 如果您还想使用索引位置.indexOf()方法......

String input = AccountInput.nextLine();
if(AccountList.contains(input))
      // do something
else
      // do something else

答案 2 :(得分:0)

您必须将输入值存储在字符串中以检查数字:

String value = AccountInput.nextLine();
if (value.equals(AccountList.get(counter))) ...

答案 3 :(得分:0)

以小写字母启动变量。以大写字母开头的名称仅适用于java中的类。因此,请使用List<String> accountList,而不是List<String> AccountList

代码中的主要问题是您要将列表中的元素与Scanner对象进行比较。这将永远是错误的。 您也永远不会将扫描仪的输入存储在任何地方。 您需要将返回值放在某处,例如

String input = scanner.nextLine();

并将列表中的字符串与此字符串进行比较,而不是Scanner-object。

我添加了一个标志,以便它可以正确处理accountList中的多个项目。

List<String> accountList = new ArrayList<String>(); 
    accountList.add("45678690");
    accountList.add("1");
    accountList.add("0");

    Scanner scanner = new Scanner(System.in);
    System.out.println("Hi whats your pin code?");
    String accountInput = scanner.nextLine();

    boolean listContainsInput = false;
    for  (int counter = 0; counter < accountList.size(); counter++){  
        if (accountInput.equals(accountList.get(counter))){
            listContainsInput = true;
            break;
        }
    }
    if(listContainsInput) {
        System.out.println("Hi");
    } else {
        System.out.println("Incorrect");
    }

答案 4 :(得分:0)

您正在比较类扫描器的实例

Scanner AccountInput = new Scanner(System.in);

到字符串:

AccountInput.equals(AccountList.get(counter))

(ArrayList.get(int)返回String或触发异常)

首先需要首先将String与String进行比较:

AccountInput.nextLine().equals(AccountList.get(counter))

如果你需要额外的debbuging,看看两个字符串是什么样子的(e.q.print'em)

以下是有关扫描仪的文档: https://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html 读它,扫描仪在编程语言中很重要。