我试图制作一个程序(只是为了好玩),它接受用户的输入和密码,并将它们添加到数组中。但是,由于我没有规定数量的用户和密码,所以我希望通过这样的操作使其自动增长:
static String[] passes = new String[i];然后在i++的某个地方;
类似这样:(inputUser是一个由扫描器给出的值的字符串)
private static void Update() {
i++;
user[i] = inputUser;
}结果:
线程"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);
}
}更新:我已将数组更改为列表,但仍有一些错误。
发布于 2016-03-26 05:43:45
使用一个集合(如ArrayList ),以便它能够动态增长。另一个建议是引入一个新的数据类型来保存您的userName和密码信息。
这里有一个简单的程序,可以帮助你。
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);
}
}发布于 2016-03-26 05:06:49
您可以使用ArrayList代替数组。ArrayList是一种动态阵列。一旦它达到这个尺寸,它就会自动生长。
要使用ArrayList,请执行以下操作。
static List<String> users = new ArrayList<String>();
private static void Update() {
users.add(inputUser)
}发布于 2016-03-26 05:04:57
使用http://www.tutorialspoint.com/java/java_collections.htm代替。您可以将ArrayList用于自动增长的数组。
https://stackoverflow.com/questions/36231799
复制相似问题