JavaScript
x
public static void main(String[] args) {
List<String> arrayList = new ArrayList<>();
Scanner input = new Scanner(System.in);
do {
System.out.println("Enter a product");
String product = input.nextLine();
arrayList.add(product);
}
while (!input.nextLine().equalsIgnoreCase("q"));
System.out.println("You wrote the following products n");
for (String naam : arrayList) {
System.out.println(naam);
}
}
I’m trying to get some input from the user and store them into arraylist. The problem is I have to write the item twice to add an item into the list. I can’t figure out why!
Advertisement
Answer
Every time you write readLine()
, a line is read. In this loop,
JavaScript
do {
System.out.println("Enter a product");
String product = input.nextLine();
arrayList.add(product);
}
while (!input.nextLine().equalsIgnoreCase("q"));
There are two occurrences of readLine()
, so two lines are read every iteration. The first line is always added to the list and not checked against q
, and the second is never added to the list, and always checked against q
.
You should only do nextLine
once:
JavaScript
while (true) {
System.out.println("Enter a product");
String product = input.nextLine(); // only this one time!
if (!product.equalsIgnoreCase("q")) {
arrayList.add(product);
} else {
break;
}
}