我編寫了一個程序,該程序具有用戶的數組列表,因此它應該創建一個新用戶並將用戶的名稱存儲在數組列表中或從數組列表中選擇一個現有用戶。問題是,當我運行代碼時,我可以選擇一個選項,但是當我想創建一個新用戶時,我無法輸入任何內容。爲什麼會發生這種情況,我該如何解決這個問題?讀取一個字符串並將其添加到ArrayList中
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Scanner;
public class Main {
private ArrayList<String> users;
public static void main(String[] args) {
Main m = new Main();
m.menu();
}
public void createNewUser(String name) {
users.add(name);
}
public boolean search(String username) {
if (users.contains(username))
return true;
else
return false;
}
public void displayUsers() {
Iterator<String> itr = users.iterator();
while (itr.hasNext()) {
String name = itr.next();
System.out.println(name);
}
}
public void menu() {
users = new ArrayList<String>();
int choice = 0;
String name;
Scanner input = new Scanner(System.in);
System.out.println("Choose an option:");
System.out.println("1- Create new user");
System.out.println("2- Select current user");
choice = input.nextInt();
if (choice == 1) {
System.out.println("Enter your name: ");
name = input.nextLine();
createNewUser(name);
displayUsers();
} else {
do {
displayUsers();
System.out.println("Enter your username: ");
name = input.nextLine();
if (search(name)) {
System.out.println("User found");
break;
}
else
System.out.println("This username does not exist.");
} while (!search(name));
}
}
}
衆所周知的行爲,你必須使用新行[檢查此答案](http://stackoverflow.com/questions/13102045/skipping-nextline-after-use-nextint) – gtgaxiola 2014-10-01 18:14:47
爲什麼使用'if' -'else'在'search()'方法;你只需要'返回users.contains(用戶名)',這就消除了首先從'contains()'中分離出一個方法的需要...... – bcsb1001 2014-10-01 18:17:23