我一直在 IntellJ IDEA(最新社区版本)中编写一个程序,将应用程序的新用户存储到名为 users 的数组列表中。
由于某种原因,我的数组列表无法访问我的用户类。
我的主课:
public class Main {
List<User> users = new ArrayList<>();
Scanner scanner = new Scanner(System.in);
String input = scanner.nextLine();
public static void main(String[] args) {
Main m = new Main();
m.makeUser();
}
public void makeUser() {
//makes new User
User user = new User();
System.out.println("Username: ");
input = scanner.nextLine();
//sets username to input
user.username = input;
System.out.println("Password: ");
input = scanner.nextLine();
//sets password to new input
user.password = input;
addUser(user);
}
private void addUser(User user){
// adds a new user to an Arraylist
users.add(user);
user.setUserIndex(users.size() - 1);
}
}
我的用户类别:
public class User {
String username;
String password;
String email;
int userIndex;
boolean loggedIn;
// Getters
public String getEmail(){
return email;
}
public String getPassword(){
return password;
}
public String getUsername(){
return username;
}
public int getUserIndex(){
return userIndex;
}
//Setters
public void setUserIndex(int index){
userIndex = index;
}
public void setPassword(String pass){
password = pass;
}
public void setEmail(String eMail){
email = eMail;
}
public void setLoggedIn(boolean status){
loggedIn = status;
}
}
addUser() 方法中的“users.add(user)”行被标记,确切的错误为:无法访问用户。
当一切都是公开的时,为什么我的 arraylist 用户无法访问 User?我应该使用不同的东西来存储用户还是这是范围问题?
我已经尝试解决这个问题几个小时了,任何帮助将不胜感激。
谢谢你。
我假设您使用了具有这两个类定义的单个 java 文件。
您有2个选择:
将公共类 User 定义更改为类 User (删除 公共关键字)
请将用户类定义移至单独的文件中。
请检查您是否导入了Java util 类。如果尚未完成,请添加以下声明。
导入java.util.*;
根本原因:我们在任何java文件中应该只有1个公共类
请参阅https://dzone.com/articles/why-single-java-source-file-can-not-have-more-than
根据选项1修正了代码:
import java.util.*;
public class Main {
List<User1> users = new ArrayList<>();
Scanner scanner = new Scanner(System.in);
String input = scanner.nextLine();
public static void main(String[] args) {
Main m = new Main();
m.makeUser();
}
public void makeUser() {
//makes new User
User1 user = new User1();
System.out.println("Username: ");
input = scanner.nextLine();
//sets username to input
user.username = input;
System.out.println("Password: ");
input = scanner.nextLine();
//sets password to new input
user.password = input;
addUser(user);
}
private void addUser(User1 user){
// adds a new user to an Arraylist
users.add(user);
user.setUserIndex(users.size() - 1);
}
}
class User {
String username;
String password;
String email;
int userIndex;
boolean loggedIn;
// Getters
public String getEmail(){
return email;
}
public String getPassword(){
return password;
}
public String getUsername(){
return username;
}
public int getUserIndex(){
return userIndex;
}
//Setters
public void setUserIndex(int index){
userIndex = index;
}
public void setPassword(String pass){
password = pass;
}
public void setEmail(String eMail){
email = eMail;
}
public void setLoggedIn(boolean status){
loggedIn = status;
}
}