我有一个需要帮助的项目。我是编程的初学者,对此我不太理解。我希望得到答案。
Scanner reg_input = new Scanner(System.in);
int ctr = 0,item = 1;
char reg_mn = 'y', choice;
String[] user = new String[item];
String[] pass = new String[item];
reg_mn = 'y';
do {
System.out.println("[REGISTER]");
System.out.println("==========");
System.out.print("Username: ");
user[ctr] = reg_input.next(); //Line 11
System.out.print("Password: ");
pass[ctr] = reg_input.next();
System.out.println("==========");
System.out.println("Do you wish to Continue? [Y/N]");
choice = reg_input.next().charAt(0);
if (choice == 'y' || choice =='y') {
item = item + 1;
}
else if (choice == 'n' || choice == 'N') {
reg_mn = 'n';
item = item + 1;
return;
}
ctr++;
} while (reg_mn == 'y' || reg_mn == 'Y');
第一个循环很好。这里的问题是当我键入“ y” 尝试获取第二个循环,我从第11行的扫描仪收到一个错误
答案 0 :(得分:1)
因为您声明的字符串的大小最初为1。 因此,如果您将项目增加1,但字符串数组的大小将不会增加,因为它以大小1声明。
String[] user = new String[item];
String[] pass = new String[item];
像这样改变
String[] user = new String[30];
String[] pass = new String[30];
您必须声明一些最大大小。
我建议您使用任何 java集合,例如 HashMap 。 因为在这里您声明的是最大大小的字符串数组,所以它分配了该大小,但是如果仅存储2个用户,则剩余大小将被浪费。为此,请使用“收藏夹”。