通过读取文件来创建java数组

时间:2015-09-30 11:22:22

标签: java arrays

我刚刚开始学习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]);
        }
}

3 个答案:

答案 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]