我已经做了几个星期的工作,需要一些帮助。请不要将我推荐给JavaDocs,因为我已经无数次地审阅过它,并且无法找到我的程序的解决方案。 这就是我需要做的事情:
一旦用户执行此操作(点击输入而不键入任何内容),程序将在表中显示ArrayList的所有元素,包括索引和字符串值。它将通过单个循环
完成此操作这是我到目前为止的代码:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
import java.util.ArrayList;
// declares a name for the class
public class GroceryList2 {
/**
* Allows the program to be run and throws the Input-Output exception
* error
*/
public static void main(String[] args) throws IOException {
BufferedReader userInput =
new BufferedReader( new InputStreamReader(System.in));
Scanner in = new Scanner(System.in);//allows for input
// declares the ArrayList to be a String
ArrayList<String> myArr = new ArrayList<String>();
myArr.add("Milk");
myArr.add("Cheese");
myArr.add("Eggs");
myArr.add("Bread"); //the values of the ArrayList already entereed
// the loop that allows the criteria to run
while(true) {
if(myArr.isEmpty()== false ) {
System.out.println("Enter the items for the grocery list: ");
String item = in.next();//asks and allows for input
myArr.add(item);
}
else if(myArr.isEmpty()== true ) {
for (int i=0; i<myArr.size(); i++ ) {
// displays the list after the input
System.out.print(
"The Grocery List "+ i+ ": "+ myArr.get(i));
}
}
}
}
}
代码编译,但是当我按下回车时,它没有显示购物清单,它等待另一个条目。
答案 0 :(得分:0)
更改if语句中的条件,只需交换它们。或者通过
更好地改进if(myArr.isEmpty())
然后在第二个
if(!myArr.isEmpty())
答案 1 :(得分:0)
@Cece在while
循环内你实际上并没有按照自己的意愿行事。
首先,在每次迭代时,条件myArr.isEmpty()== false
都将被验证(因为您的myArr
数组永远不会为空,因为您在进入while
循环之前已填充它),所以代码的执行将始终到达相同的条件分支。正如旁注,您可以更优雅地写出这样的内容:!myArr.isEmpty
。
其次,您正在从用户那里读取字符串,但您所做的就是将它们添加到数组中。由于永远不会到达else
分支,因此永远不会转储数组的内容。正如旁注,if
语句之后的else
语句是多余的。你可以安全地删除它。
第三,您的代码的问题是您永远不会检查用户输入是否为空。相反,你检查的是杂货阵列是否为空。
这就是我写while
循环的方法:
while(true){
String item = in.next();
if(item.isEmpty()){
System.out.println("The Grocery List: ");
for(int i=0; i<myArr.size(); i++) {
System.out.println(i + ": "+ myArr.get(i));
}
break;
}
else{
myArr.add(item);
}
}
如果您不理解我的代码的任何部分,请告诉我。