Java字符串循环数组无效

Bea*_*inz 0 java arrays string null duplicates

所以给了我一组电子邮件,我应该读取它们,将它们存储在一个数组中,删除重复项,并打印"剩菜".我几乎能够做到这一点,但删除重复后,当我打印剩余的时,它会打印一个额外的null.

这是我的代码.有人能指出我修复它的方向吗?

public class Duplicate {
    public static void main(String [] args){
        Scanner keyboard = new Scanner(System.in);
        System.out.println("Enter file name: ");
        String fileName = keyboard.nextLine();
        if(fileName.equals("")){
            System.out.println("Error: User did not specify a file name.");
        }
        else{Scanner inputStream = null;

        try{inputStream = new Scanner(new File(fileName));
        }
        catch(FileNotFoundException e){
            System.out.println("Error: "+ fileName + " does not exist.");
            System.exit(0);
        }


        String [] address = new String[100];

        for(int i=0;inputStream.hasNextLine();i++){
            String email = inputStream.nextLine();
            address[i]=email.toLowerCase();
            //System.out.println(address[i]);
        }


        Set<String> mail = new HashSet<String>(Arrays.asList(address));

        for(String email:mail){
            System.out.println(email);
        }
Run Code Online (Sandbox Code Playgroud)

nos*_*sid 5

我假设您正在阅读少于100个地址.数组地址中的其余元素为null.这是null值的原因.

用以下内容替换固定大小的数组ArrayList<String>:

List<String> address = new ArrayList<String>();
//...
    address.add(email.toLowerCase());
    // ...
Run Code Online (Sandbox Code Playgroud)

您还必须替换集合的构造:

Set<String> mail = new HashSet<String>(address);
Run Code Online (Sandbox Code Playgroud)