java - 如何在循环之外重新打印循环输出
问题描述
问题: 如何在循环外重新打印 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]”
解决方案
如果我对您的理解正确,您希望看到如下内容:
[0]MovieTitle1 Price: MoviePrice1
[1]MovieTitle2 Price: MoviePrice2
有一些问题:一开始,你会得到一个 IndexOutOfBoundsException,因为i
和j
已经增加到title.size()
. 这是因为两个 for 循环。
在我的示例中,这意味着在两个 for-Loop 都执行后为真i == 2
。j == 2
title
ArrayList 和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]);
}
推荐阅读
- javascript - Javascript仅将for循环中的最后一个条目推送到对象
- javascript - 绘制不同的 Google Charts onClick,同时使用 AJAX 更改 src 位置
- excel - 使用 VBA 获取 2 个数组中的等效索引值
- r - R FFTrees 错误可能是由于缺失
- typescript - 使用枚举值作为接口属性名称时,Typescript 编译器会生成未使用的变量
- r - ggplot box plot不同的宽度
- c# - C# - 如何将带有@Parameters 的插入发送到数据库连接类
- c++ - g++ arm-none-eabi 从 4.9 升级到 gcc 8.2。生成的二进制文件不再适合闪存
- r - ObserveEvent 和 textInput,令人困惑的行为
- android - NotificationManager.notify 未按预期工作