Java next()和nextLine错误
我试图用Java实现一个带有ArrayList的电话簿,但每当我试图使用next()或nextLine()获取用户信息时,我都会出错。这是收集和保存用户输入的方法Java next()和nextLine错误,java,next,phonebook,Java,Next,Phonebook,我试图用Java实现一个带有ArrayList的电话簿,但每当我试图使用next()或nextLine()获取用户信息时,我都会出错。这是收集和保存用户输入的方法 public void saveContact() { String[] userInput = new String[3]; String[] input = {"name", "age", "phone number"};
public void saveContact() {
String[] userInput = new String[3];
String[] input = {"name", "age", "phone number"};
String[] pattern = {".", "\\d", ".+\\d+"};
for(int i=0; i < 3; i++) {
try (Scanner sc = new Scanner(System.in)) {
String name = "";
while(!verifyUserInput(name, pattern[i])) {
System.out.printf("Enter contact's %s\n", input[i]);
name = sc.nextLine();
userInput[i] = name;
}
}
}
phoneArrayList.add(userInput);
}
当我使用next()时,我得到
我尝试过像这样使用hasNext()和hasNextLine(),但它只会导致无限循环。我不知道我应该使用什么来获得用户输入而不会出现错误
if(sc.hasNext()) {
name = sc.next();
}
这是verifyUserInput方法
public boolean verifyUserInput(String input, String patt) {
Pattern pattern = Pattern.compile(patt);
Matcher m = pattern.matcher(input);
return m.find();
}
公开课考试{
公共静态void main(字符串[]args){
扫描仪扫描=新扫描仪(System.in);
字符串[]用户输入=新字符串[3];
字符串[]输入={“姓名”、“年龄”、“电话号码”};
字符串[]模式={“,”\\d“,“+\\d+”};
布尔值isAllInputValid=true;
对于(int i=0;i<3;i++){
System.out.printf(“输入联系人的%s\n”,输入[i]);
if(scan.hasNextLine()){
字符串inputStr=scan.nextLine();
如果(!verifyUserInput(inputStr,模式[i])){
isAllInputValid=false;
打破
}
userInput[i]=inputStr;
System.out.println(“联系人的”+input[i]+“是”+inputStr);
}
}
如果(IsalInputValid){
System.out.println(“userInput=“+Arrays.toString(userInput));
}
}
公共静态布尔verifyUserInput(字符串输入,字符串模式){
Pattern=Pattern.compile(patt);
匹配器m=模式匹配器(输入);
返回m.find();
}
}
您是如何执行此程序的?您是通过命令行传递值还是在某处提交代码?这是否回答了您的问题?
if(sc.hasNext()) {
name = sc.next();
}
public boolean verifyUserInput(String input, String patt) {
Pattern pattern = Pattern.compile(patt);
Matcher m = pattern.matcher(input);
return m.find();
}
public class Test {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String[] userInput = new String[3];
String[] input = {"name", "age", "phone number"};
String[] pattern = {".", "\\d", ".+\\d+"};
boolean isAllInputValid = true;
for (int i = 0; i < 3; i++) {
System.out.printf("Enter contact's %s\n", input[i]);
if (scan.hasNextLine()) {
String inputStr = scan.nextLine();
if (!verifyUserInput(inputStr, pattern[i])) {
isAllInputValid = false;
break;
}
userInput[i] = inputStr;
System.out.println("contact's " + input[i] + " is " + inputStr);
}
}
if (isAllInputValid) {
System.out.println("userInput = " + Arrays.toString(userInput));
}
}
public static boolean verifyUserInput(String input, String patt) {
Pattern pattern = Pattern.compile(patt);
Matcher m = pattern.matcher(input);
return m.find();
}
}