gpt4 book ai didi

java - 如何创建 for 循环以在需要 url 的数组中添加元素?

转载 作者:行者123 更新时间:2023-12-02 03:21:48 25 4
gpt4 key购买 nike

我不知道如何将 URL 放入数组中。我循环遍历 fileNames 并连接路径,但随后我陷入了如何循环遍历 urls 数组并添加我通过连接创建的内容。我该怎么做?

public class DataManager {

private String[] fileNames;
private URL[] urls;
private ArrayList<String> gameData;
Scanner s;

public DataManager(String[] fileNames, String path) throws IOException {
this.fileNames = fileNames;
this.urls = new URL[fileNames.length];
for (String file: fileNames) {
String url = path + file;
for (int i = 0; i < urls.length; i++) {
urls[i] = url;
}
}
}

public static void main(String[] args) throws IOException {
String[] fileNames = { "50.csv", "100.csv", "500.csv" };
String path = "http://people.uncw.edu/tompkinsj/331/ch07/";
DataManager foo = new DataManager(fileNames, path);
}

// getters and other methods
}

最佳答案

当出现这样的问题时,你一直在深入研究某件事,并在一个问题上花费太多时间:总是后退一步,休息一下,做点别的事情,稍后再回来......这是值得的关闭。

你的代码几乎是正确的

for (String file: fileNames){                   //logically OK
String url = path + file;
for (int i = 0; i < urls.length; i++) { //things start going wrong
urls[i] = url; //this line has a red underline
}
}

您有两个问题:一个逻辑问题和一个小问题。

小问题:

此行不正确:

urls[i] = url;

数组 urls 的类型为 URL - 它不是 String 的父类(super class)型,因此这一行在您的 IDE 中很可能是红色的。为了纠正这个问题,我们需要从字符串创建一个 URL 实例,我们很幸运:有一个专门用于此目的的构造函数:new URL(url)。但是,如果存在需要捕获的问题,则可能会引发 MalformedUrlException。为了简单起见,我们将其作为 IllegalStateException

重新抛出
try {
urls[i] = new URL(url);
} catch (MalformedUrlException e) {
throw new IllegalStateException("Wrong URL: " + url);
}

逻辑问题:

在遍历文件名时,在每次迭代中,您还会迭代整个urls[]数组我认为您不希望即:每个文件名都会产生一个 URL - 因此遍历文件名数组一次就足够了。另外,通过在每次迭代上设置值 - 您将覆盖所有以前的值,并且当所有循环完成时,您剩下的只是一个填充有最后的数组> URL 已处理。我认为您尝试使用内部循环解决的问题是您不知道将新元素放入哪个索引,因为您没有跟踪正在处理的文件名条目。在这种情况下,传统的 for 循环比仅仅迭代数组更方便:

for (int i = 0; i < fileNames.length; i++){
String file = fileNames[i];
String url = path + file;
try {
urls[i] = new URL(url);
} catch (MalformedUrlException e) {
throw new IllegalStateException("Wrong URL: " + url);
}
}

当然,这可以改进得更短一点:

for (int i = 0; i < fileNames.length; i++){
try {
urls[i] = new URL(path + fileNames[i]);
} catch (MalformedUrlException e) {
throw new IllegalStateException("Wrong URL: " + path + fileNames[i]);
}
}

...当然,异常需要适当的处理,但这需要更深入地了解代码正在尝试执行的操作,例如如果 URL 不正确,是否会被视为不可恢复的错误等。

关于java - 如何创建 for 循环以在需要 url 的数组中添加元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39496592/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com