我正在创建用于制作快捷方式的程序。基本上,它的作用是:我提供了要处理的单词数。假设我在这种情况下输入3。下一步是通过Scanner从用户那里获得这些单词。看起来很容易,对吧?我做了什么?我将Scanner放入循环内(它应该将单词放入ArrayList内),但是循环跳过了0而不要求用户输入单词。我认为这是Scanner的问题,原因是当我放置而不是使用诸如System.out.println之类的扫描器时,循环工作正常。
我已经尝试制作其他函数来询问用户单词并将此元素添加到列表中,而在同一循环中,我刚刚到达此函数。但这没有帮助。我也尝试将“ i ++”移到data.add后面,但效果不佳。
public class Main {
public static void main(String[] args) {
ArrayList<String> data = new ArrayList<>();
UserInteraction userInteraction = new UserInteraction();
userInteraction.enterData(data);
for(String x: data)
System.out.println(x);
}
}
public class UserInteraction {
private Scanner scanner = new Scanner(System.in);
private int getData() throws InputMismatchException {
try{
int number = scanner.nextInt();
return number;
}catch (InputMismatchException e){
System.out.println("Not a number. Try again:");
return getData();
}
}
void enterData(ArrayList<String> data){
System.out.println("Enter the number of words:");
int quantity = getData();
System.out.println("Now, enter the words. Every word must be separated by clicking enter:");
for(int i=0; i<quantity;i++){
System.out.println(i);
data.add(scanner.nextLine());
}
}
}
我得到以下输出:
Enter the number of words:
4
Now, enter the words. Every word must be seperated by clicking enter:
0
1
您可以看到由于某些原因未到达扫描仪。但是在1、2和3之后,它可以工作。是的,我可以修改循环