首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java自动增长数组

问Java自动增长数组
EN

Stack Overflow用户
提问于 2016-03-26 05:00:01
回答 5查看 1.7K关注 0票数 1

我试图制作一个程序(只是为了好玩),它接受用户的输入和密码,并将它们添加到数组中。但是,由于我没有规定数量的用户和密码,所以我希望通过这样的操作使其自动增长:

代码语言:javascript
复制
static String[] passes = new String[i];

然后在i++的某个地方;

类似这样:(inputUser是一个由扫描器给出的值的字符串)

代码语言:javascript
复制
private static void Update() {
    i++;
    user[i] = inputUser;
}

结果:

线程"main“java.lang.ArrayIndexOutOfBoundsException: 1中的异常

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

代码被请求:

代码语言:javascript
复制
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);
    }
}

更新:我已将数组更改为列表,但仍有一些错误。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2016-03-26 05:43:45

使用一个集合(如ArrayList ),以便它能够动态增长。另一个建议是引入一个新的数据类型来保存您的userName和密码信息。

这里有一个简单的程序,可以帮助你。

代码语言:javascript
复制
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);
    }
}
票数 3
EN

Stack Overflow用户

发布于 2016-03-26 05:06:49

您可以使用ArrayList代替数组。ArrayList是一种动态阵列。一旦它达到这个尺寸,它就会自动生长。

要使用ArrayList,请执行以下操作。

代码语言:javascript
复制
static List<String> users = new ArrayList<String>();

private static void Update() {
   users.add(inputUser)
}
票数 1
EN

Stack Overflow用户

发布于 2016-03-26 05:04:57

使用http://www.tutorialspoint.com/java/java_collections.htm代替。您可以将ArrayList用于自动增长的数组。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36231799

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档