首页 > 解决方案 > 如何在循环之外重新打印循环输出

问题描述

问题: 如何在循环外重新打印 for 循环输出?需要帮助才能弄清楚。似乎是什么错误?

研究努力:

  **import java.util.*;
public class Admin {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);


        ArrayList <String> title = new ArrayList<>();

        String n = in.nextLine();
        int i = 0;
        int j = 0;

        while(!n.equals(" ")){
              System.out.println("Enter a movie title");
            title.add(n);
            n = in.nextLine();
        }

        for(;i < title.size(); i++){

            System.out.println("[" + i +"]" +title.get(i));
        }
                int [] price = new int [title.size()];


        for(;j < price.length; j++ ){
            System.out.println("Enter price for");
            price[j] = in.nextInt();
            System.out.println("Price for ["+j+"] is "+ price[j]  );

        }
          //the problem
               System.out.println("["+ i+"]"+title.get(i)+" Price: "+price[j] );


        }
  }

每次我在循环之后运行它时,都会出现错误 预期结果:它会在循环之外打印“i”和“title[i]”以及“j”和“price[j]”

标签: java

解决方案


如果我对您的理解正确,您希望看到如下内容:

[0]MovieTitle1 Price: MoviePrice1
[1]MovieTitle2 Price: MoviePrice2

有一些问题:一开始,你会得到一个 IndexOutOfBoundsException,因为ij已经增加到title.size(). 这是因为两个 for 循环。

在我的示例中,这意味着在两个 for-Loop 都执行后为真i == 2j == 2

titleArrayList 和Array 知道条目 0 和 1(在我的price示例中) - 您正在尝试访问超出范围的条目 2。

一个可能的解决方案是改变这一点:

System.out.println("["+ i+"]"+title.get(i)+" Price: "+price[j] );

像这样:

for(int n = 0; n < title.size(); n++) {
    System.out.println("[" + n + "]" + title.get(n) + " Price: " + price[n]);
}

推荐阅读