检查文件中的文本,将其与用户输入进行比较

时间:2015-08-12 02:09:58

标签: java

这是要求用户输入其信息然后运行checkID(); 将文件中已有的ID与用户输入进行比较

public static void newRecord()
{
    System.out.println("Enter your full name: ");
    name = input.nextLine();
    name = input.nextLine();

    System.out.println("Enter your age: " );
    age = input.nextInt();
    input.nextLine();

    System.out.println("Enter your id: ");
    id = input.nextInt();

    checkID();



    if(checkID())
    {
        start();
    }
    else
    {
        System.out.println(id);
        addRecords();
    }
}

这是我检查身份证的地方。我检查ID:启动的位置然后查找id的值,但是它没有检测到文件中的ID并且它创建了精确的Id,而不是告诉用户id已经被记录

public static boolean checkID()
{
    Scanner y = new Scanner("Names.txt");
    while(y.hasNextLine())
    {
        final String idChecker = y.nextLine();
        if(idChecker.startsWith("ID: ") && idChecker.substring(4).equals(String.valueOf(id)))
        {
            System.out.println("Sorry, this ID has already been taken, please try again.");
            y.close();
            return true;
        }
    }
    y.close();
    return false;
}

1 个答案:

答案 0 :(得分:0)

  1. 您需要将File对象传递给Scanner而不是文件名。
  2. 另一个问题是,只有在您检查了 Names.txt 中的所有ID后,才应致电addRecords(),即一旦您的while循环退出,进入if区块。
  3. 您还应该使用equals()代替contains(),否则如果11已经存在,您就无法创建身份1
  4. 理想情况下,您的checkID()方法应返回boolean表示已存在的ID,然后调用方应相应地调用start()addRecords()

    public static boolean checkID()
    {
        try {
            Scanner y = new Scanner(new File("Names.txt")); // pass File instance
            while(y.hasNextLine())
            {
                final String idChecker = y.nextLine();
                if(idChecker.startsWith("ID: ") &&
                   idChecker.substring(4).equals(String.valueOf(id)))
                {
                    System.out.println(
                        "Sorry, this ID has already been taken, please try again.");
                    y.close();
                    return true;
                }
            }
            y.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        return false;
    }
    

    请注意,我完成后会调用Scanner#close()。您的newRecord()方法应该类似于

    public static void newRecord()
    {
        System.out.println("Enter your full name: ");
        name = input.nextLine();
    
        System.out.println("Enter your age: " );
        age = input.nextInt();
    
        System.out.println("Enter your id: ");
        id = input.nextInt();
    
        System.out.println(id);
    
        if(checkID())
        {
          start();
        }
        else
        {
            addRecords();
        }
    }