Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我的Java类addUserToTheList()没有';行不通_Java_File_Arraylist_Sharing - Fatal编程技术网

我的Java类addUserToTheList()没有';行不通

我的Java类addUserToTheList()没有';行不通,java,file,arraylist,sharing,Java,File,Arraylist,Sharing,我有以下两门课: import java.io.*; import java.util.*; public class User { public static String nickname; public static String ipAddress; public static ArrayList<String> listOfFiles; public static File sharedFolder; public static

我有以下两门课:

import java.io.*;
import java.util.*;

public class User {

    public static String nickname;
    public static String ipAddress;
    public static ArrayList<String> listOfFiles;
    public static File sharedFolder;
    public static String fileLocation;

    public User(String nickname, String ipAddress, String fileLocation) {

        this.nickname = nickname.toLowerCase();
        this.ipAddress = ipAddress;

        Scanner userTyping = new Scanner(System.in);
        fileLocation = userTyping.nextLine();

        sharedFolder = new File(fileLocation);

    }

    public static List<String> fileList() {

        File[] files = sharedFolder.listFiles();

        listOfFiles = new ArrayList<String>();

        for (int i = 0; i < files.length; i++) {

            listOfFiles.add(i, files[i].toString().substring(fileLocation.length()));
            System.out.println(listOfFiles.get(i));

        }

       return listOfFiles;

    }

    @Override
    public String toString() {
        return nickname + " " + ipAddress;
    }



}
import java.io.*;
导入java.util.*;
公共类用户{
公共静态字符串昵称;
公共静态字符串IP地址;
公共静态数组列表文件;
公共静态文件共享文件夹;
公共静态字符串文件位置;
公共用户(字符串昵称、字符串IP地址、字符串文件位置){
this.昵称=昵称.toLowerCase();
this.ipAddress=ipAddress;
Scanner userTyping=新扫描仪(System.in);
fileLocation=userTyping.nextLine();
sharedFolder=新文件(文件位置);
}
公共静态列表文件列表(){
File[]files=sharedFolder.listFiles();
listOfFiles=newarraylist();
对于(int i=0;i
下一个:

import java.util.*;


public class UserCollector {

    static List<User> allUsers;

    public static void addUserToTheList() {

        Scanner keyboardInput = new Scanner(System.in);

            System.out.println("Type nickname: ");
        String nickname = keyboardInput.nextLine();
            System.out.println("Type IP: ");
        String ipAddress = keyboardInput.nextLine();
            System.out.println("Type File Location: ");
        String fileLocation = keyboardInput.nextLine();

        System.out.println("User that is attempting to log in is: "+ nickname + " and his IP is: " + ipAddress);

        User inputUser = new User(nickname, ipAddress, fileLocation);

        allUsers = new ArrayList<User>();

        if (keyboardInput.nextLine().equalsIgnoreCase("INSERT") && !allUsers.contains(inputUser)) {

            allUsers.add(inputUser);
            System.out.println("User has been successfully added to your list.");
        }
        else
            System.out.println("This user already exists on the list!");

    }

    public static void currentStateOfTheList() {

        for (User u : allUsers) {
               System.out.println("nick: "+u.nickname +", ip: "+ u.ipAddress );
           }

    }

    public static void main(String[] args) {

        UserCollector.addUserToTheList();
        UserCollector.currentStateOfTheList();

    }

}
import java.util.*;
公共类用户收集器{
静态列表;
public static void addUserToTheList(){
扫描仪键盘输入=新扫描仪(System.in);
System.out.println(“类型昵称:”);
字符串昵称=keyboardInput.nextLine();
System.out.println(“类型IP:”);
字符串ipAddress=keyboardInput.nextLine();
System.out.println(“键入文件位置:”);
String fileLocation=keyboardInput.nextLine();
System.out.println(“试图登录的用户是:“+昵称+”,他的IP是:“+ipAddress”);
用户输入用户=新用户(昵称、IP地址、文件位置);
allUsers=新的ArrayList();
if(keyboardInput.nextLine().equalsIgnoreCase(“插入”)和&!allUsers.contains(inputUser)){
添加(输入用户);
System.out.println(“用户已成功添加到您的列表中。”);
}
其他的
System.out.println(“此用户已存在于列表中!”);
}
公共静态无效CurrentStateofList(){
用于(用户u:allUsers){
System.out.println(“尼克:+u.昵称+”,ip:+u.ipAddress);
}
}
公共静态void main(字符串[]args){
UserCollector.addUserToTheList();
UserCollector.CurrentStateofList();
}
}
现在,addUserToTheList()方法的思想很简单。将User类型的对象添加到ArrayList中。也可以通过在控制台中键入昵称、IP地址和文件位置来实现。我第一次运行它时,它运行得很好,但它抛出了一个异常(NullPointer)。 现在,当我运行它时,它编译得很好,但它说我已经在列表中有了那个用户,尽管我总是给它起不同的昵称/ipAddress/fileLocation

我相信用户对象有问题,每次我尝试运行它时,它可能都保持不变


我希望有人能帮助我。谢谢

我想知道您是否有问题,因为您有两种不同的东西试图访问System.in对象。您的用户类中有一个扫描仪要求System.in,而另一个类中有一个扫描仪要求System.in。控制台如何知道将输入传递给哪个对象


这可能不是您的问题,但您可能希望重新设计类,以便只有一个类接受来自命令行的用户输入

您的程序有一个main和一个这样的调用

 UserCollector.addUserToTheList();
程序完成后,列表将被销毁。下次跑步时,你会得到一个新的列表。如果您的目的是添加大量用户,那么您要么需要不断提示更多用户,要么需要将正在生成的列表保存到某个位置

你打电话

  allUsers = new ArrayList<User>();
UserCollector构造函数可以初始化用户列表

public class UserCollector {

    private List<User> allUsers;
    public UserCollector() {
          allUsers = new ArrayList<User>();
    }

当您键入“插入”ypu以外的任何内容时,请点击“用户已存在”方法。我总是将这些子句分开,给出不同的消息。

您一直在使用“static”关键字。你知道那是什么意思吗?这里的代码太多了。恐怕你需要做更多的阅读和调试,才能把你的问题归结为一个具体的问题。我相信我的问题是具体的。如果我知道任何其他(较短的)方式来问这个问题,我会选择:)好的,这次我会完全听你的,并在这里告诉你最终的变化。再次感谢:)还有一个问题,我应该在构造函数中输入什么?我不完全清楚这一点
public class UserCollector {

    private List<User> allUsers;
    public UserCollector() {
          allUsers = new ArrayList<User>();
    }
    if (keyboardInput.nextLine().equalsIgnoreCase("INSERT") 
              && !allUsers.contains(inputUser))    {
        allUsers.add(inputUser);
        System.out.println("User has been successfully added to your list.");
    }
    else
        System.out.println("This user already exists on the list!");