Java Arraylist 无法访问类对象

问题描述 投票:0回答:1

我一直在 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 list class arraylist scope
1个回答
0
投票

我假设您使用了具有这两个类定义的单个 java 文件。

您有2个选择:

  1. 将公共类 User 定义更改为类 User (删除 公共关键字)

  2. 请将用户类定义移至单独的文件中。

请检查您是否导入了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;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.