读取文本文件数组以检查值

时间:2014-02-07 16:41:36

标签: java arrays file

我创建了一个包含值数组的程序,并要求用户输入一个值。然后,它根据数组值检查用户输入,并显示它是否有效。我遇到问题的第二部分基本上是做同样的事情,但是从文本文件中读取相同的值。

非常感谢任何帮助!

这是第一个问题的代码:

import java.util.Scanner;

public class ChargeAccount2 
{

public static void main(String[] args) 
{
    int results;
    int accountNum;

    int[] values={5658845,8080152,1005231,4520125,4562555,6545231,7895122,5552012,3852085,8777541,5050552,7576651,8451277,7825877,7881200,1302850,1250255,4581002};

    Scanner keyboard = new Scanner(System.in);
    System.out.println("Enter a charge account #:");
    accountNum = keyboard.nextInt();

    results = ChargeAccountSearchArray.sequentialSearch(values,accountNum);

    if (results == -1)
    {
        System.out.println(accountNum + " is not valid.");
    }

    else
    {
        System.out.println(accountNum + " is valid.");
    }

}

}

这是SearchArray计划:

public class ChargeAccountSearchArray {
    public static int sequentialSearch(int[] array, int value) {
        int index, element;
        boolean found;

        index = 0;
        element = -1;
        found = false;

        while (!found && index < array.length) {
            if (array[index] == value) {
                found = true;
                element = index;
            }
            index++;
        }

        return element;
    }
}

1 个答案:

答案 0 :(得分:0)

您也可以在文件上使用该扫描仪!

File file = new File(filename);
Scanner scanner = new Scanner(file);

假设您的输入显示在一个文件中,每行一个,您将扫描文件逐行扫描,并以与您之前相同的方式处理输入。

while (scanner.hasNextLine()) {

    String input = scanner.nextLine();
    Integer i = new Integer(input); 
    //process input here

    results = ChargeAccountSearchArray.sequentialSearch(values,accountNum);

    if (results == -1)
    {
       System.out.println(accountNum + " is not valid.");
    }

    else
    {
        System.out.println(accountNum + " is valid.");
    }     
}
scanner.close(); //when you're finished

另外,请务必使用scanner.nextLine()代替scanner.nextInt()。这样做的好处是它可以很容易地找到文件的结尾。两者之间的区别在于nextLine()得到一个整行,然后你可以根据需要进行切割(可能使用String.split(“,”),而nextInt()只获取下一个标记。