ArrayList
是从一个文件中创建的,没有任何问题。当创建一个显示结果的方法时,这是Helper
类中代码的一部分。我知道我不能对数组列表使用.toString((,但我不知道如何使用它。
原始代码:
public static void display(ArrayList<String> shapes) throws FileNotFoundException{
ArrayList<String> list = new ArrayList<String>();
Scanner input = new Scanner(ArrayList.toString(list)); //This is the problem line.
while(input.hasNext()){
String chosenShape = input.nextLine();
switch (chosenShape.toLowerCase())
{
case "rectangle":
Rectangle rectangle = new Rectangle();
rectangle.name = input.nextLine();
rectangle.setWidth(input.nextDouble());
rectangle.setLength(input.nextDouble());
System.out.print(rectangle);
break;
更新代码:
public static void display(ArrayList<String> shapes) throws IOException, FileNotFoundException{
java.util.List<String> list = Arrays.asList("rectangle", "circle","triangle");
for(int i = 0; i<list.size(); i++)
switch (list.get(i).toLowerCase())
{
case "rectangle":
Rectangle rectangle = new Rectangle();
rectangle.name = list.get(i+1);
rectangle.setWidth(Double.valueOf(list.get(i+2)));
rectangle.setLength(Double.valueOf(list.get(i+3)));
System.out.print(rectangle);
i = (i+3);
break;
给出的错误:线程"main"java.lang.NumberFormatException中的异常:对于输入字符串:"triangle"。当我去掉"三角形"的时候。。。线程"main"java.lang.ArrayIndexOutOfBoundsException异常:2
尝试:
public static void main(String[] args) {
List<String> list = Arrays.asList("circle", "rectangle");
for(int i=0; i<list.size(); i++ ) {
switch(list.get(i).toLowerCase())
{
case "rectangle":
// Your rectangle code
break;
case "circle":
// Your circle code
break;
default: System.out.println("Default");
}
}
}
或者您可以使用Java 8 ArrayList foreach()
:
list.forEach(s -> {
switch(s.toLowerCase())
{
case "rectangle":
// Your rectangle code
break;
case "circle":
// Your circle code
break;
default: System.out.println("Default");
}
});
或者你也可以使用增强的for循环:
for(String s: list) {
switch(s.toLowerCase())
{
case "rectangle":
// Your rectangle code
System.out.println("t");
break;
case "circle":
// Your circle code
break;
default: System.out.println("Default");
}
}
注意:您需要对arraylist
的每个元素进行迭代。Scanner
用于获得用户输入。