我的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!");