我刚刚开始学习Java,我正在尝试从我创建的文本文件中读取名称。然后我希望我的程序向用户询问名称,然后检查名称是否在该列表中。但是,我在使用数组时遇到问题,所以首先我尝试只读取名称,然后将它们存储在数组中。这是我到目前为止所做的。
import java.util.Scanner;
import java.io.File;
import java.io.FileNotFoundException;
public class readnames
{
public static void main(String[] args) throws FileNotFoundException
{
File file=new File("names.txt");
Scanner my_input = new Scanner(file);
int i=0;
String[] names = new String[20] ;
while(my_input.hasNext() && !names.equals("-1"))
{
names[i]=my_input.nextLine();
i++;
}
my_input.close();
System.out.println(names[i]);
}
}
答案 0 :(得分:0)
public static void main(String[] args) throws FileNotFoundException {
File file = new File("names.txt");
Scanner my_input = new Scanner(file);
ArrayList<String> names = new ArrayList<>();
while (my_input.hasNext()) {
String t =my_input.nextLine();
if( !t.equals("-1"))
names.add(t);
}
System.out.println("Enter name");
String nameToCheck = my_input.nextLine();
if (names.contains(nameToCheck)) {
System.out.println("Found");
}
my_input.close();
}
我建议您使用ArrayList&lt;&gt;因为文件可能包含20个以上的名称
使用普通数组
public static void main(String[] args) throws FileNotFoundException {
File file = new File("names.txt");
Scanner my_input = new Scanner(file);
String[] names = new String[20];
int i = 0;
while (my_input.hasNext()) {
String t = my_input.nextLine();
if(!t.equals("-1"))
names[i++] = t;
}
System.out.println("Enter name");
String nameToCheck = my_input.nextLine();
for (String temp : names) {
if (temp.equals(nameToCheck)) {
System.out.println("FOund");
}
}
my_input.close();
}
答案 1 :(得分:0)
!names.equals("-1")
始终为true
,因为names
是一个数组。虽然没有使用ArrayList
(动态大小的数组),但这里有一个快速修复:
public class ReadNames {
public static void main(String[] args) throws Throwable {
File file = new File("names.txt");
Scanner my_input = new Scanner(file);
int i = 0;
// FIXME the file you're reading may exceed 20 lines, use ``ArrayList`` instead
String[] names = new String[20];
while(my_input.hasNext()) {
String line = my_input.nextLine();
if(line.equals("-1")) {
// end reading prematurely
break;
}
names[i] = line;
i++;
}
my_input.close();
// print entire array
System.out.println(Arrays.toString(names));
}
}
答案 2 :(得分:0)
您正在循环中递增i变量。
如果您可以显示姓氏,则可以在之前递减变量
name[i]
。