我创建了一个包含值数组的程序,并要求用户输入一个值。然后,它根据数组值检查用户输入,并显示它是否有效。我遇到问题的第二部分基本上是做同样的事情,但是从文本文件中读取相同的值。
非常感谢任何帮助!
这是第一个问题的代码:
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;
}
}
答案 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()只获取下一个标记。