Java自动增长数组

标签 java arrays eclipse

<分区>

我正在尝试制作一个程序(只是为了好玩),它接受用户输入和密码,并将它们添加到数组中。但是由于我没有定义数量的用户和密码,我想通过执行以下操作使其自动增长:

static String[] passes = new String[i];

然后在某处 i++;

像这样:(inputUser 是一个由扫描仪赋予值的字符串)

private static void Update() {
    i++;
    user[i] = inputUser;
}

结果:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1

我试过了,但没有用,也许我做错了什么?

请求代码:

package users.main;

import java.util.List;
import java.util.Scanner;

public class Main { 

static int i = 0;
static List<String> users = new ArrayList<String>; // << Also highlighted red. Do i need ()?
//     ^^^ Error
static String[] passes = new String[i];
static String inputUser = null;
static String inputPass = null;

public static void main (String[] args) {
    @SuppressWarnings("resource")         // <--- Eclipse wanted me to add this?....
    Scanner sc = new Scanner(System.in);
    String userInput = sc.nextLine();

    switch (userInput) {
    case "adduser":
        AddUser();
        break;  

    default:

        System.out.println("Unknown command");
        main(args);
    }
}

UPDATE: I have changed the array to a list, but am still getting some errors.

最佳答案

使用像 ArrayList 这样的集合,这样它就可以动态增长。另一个建议,引入一种新的数据类型来保存您的用户名和密码信息。

这是一个可能对您有所帮助的简单程序。

package stackoverflow1;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

class User {
    private String mUserName;
    private String mPassword;

    public User(String userName, String password) {
        mUserName = userName;
        mPassword = password;
    }

    public String getUserName() { return mUserName; }
    public String getPasword() { return mPassword; }

    @Override
    public String toString() {
        String info = String.format("Name: %s Pwd: %s", mUserName, mPassword);
        return info;
    }
}

public class Main {
    static List<User> users = new ArrayList<>();        

    static void addUser(Scanner scanner) {
        String userName, password;

        println("UserName: ");
        userName = scanner.nextLine();
        println("Password: ");
        password = scanner.nextLine();

        println("Adding a new user now.");
        users.add(new User(userName, password));        
    }

    public static void main(String[] args) {        
        Scanner scanner = new Scanner(System.in);
        boolean done = false;

        while (!done) {
            println("Add user name and password. Type quit when you are done.");
            String userInput = scanner.nextLine();

            switch (userInput) {
                case "adduser":
                    addUser(scanner);
                    break;

                case "quit":
                    done = true;
                    break;

                default:
                    println("Unknown input!");
            }
        }

        println("--- Users Information ---");
        users.forEach(user -> println(user.toString()));
    }

    static void println(String msg) {
        System.out.println(msg);
    }
}

关于Java自动增长数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36231799/

相关文章:

c - 在结构体中打印任意大小的数组

javascript - 使用数组和循环每隔几秒更改一次标题

eclipse - 如何在Ubuntu上安装的Hadoop上减少连接/运行 map

java - UnsatisfiedLinkError: java.library.path 中没有 j3dcore-ogl

java - 编译时 user.agent 值与运行时 user.agent 值不匹配

java - 为生产环境配置 Spring Cloud Config Server 和 Spring Cloud Vault

java - 如何从计数中排除空格?

java - 如何轻松编辑 JTextPane 中选定文本的样式?

java - Spring MongoDB 流内存泄漏?

javascript - 重构 Javascript 数组