使用 flickr 时出现 arrayoutofboundsexception api
arrayoutofboundsexception when using flickr api
我有一段代码可以在 flickr 上进行图像搜索,returns URL 具有该名称的第一张图像。我在 flickr 上搜索的某些词没有任何匹配的图像,所以因为没有图像可以获取,所以我得到一个 ArrayOutOfBoundsException [0]。有什么方法可以让程序跳过特定的单词并继续搜索下一个单词?
到目前为止,这是我的代码:
PImage[] images;
int imageIndex;
XML xml;
String tag = "rutte";
String tag_mode = "all";
String words[];
void setup() {
size(50, 50);
String lines[] = loadStrings("text.txt");
words = split(lines[0], " ");
for (int k = 0; k<words.length; k++) {
String query = "https://api.flickr.com/services/rest/?method=flickr.photos.search&api_key=MY API KEY&tags="+ words[k] + "&sort=relevance&tag_mode="+ tag_mode +"format=rest";
xml = loadXML(query);
XML[] children = xml.getChildren("photos");
if(children.length > 0){
XML[] childPhoto = children[0].getChildren("photo");
for (int i = 0; i < 1; i++) {
String id = childPhoto[i].getString("id"); // this line generates the error :(
String title = childPhoto[i].getString("title");
String user = childPhoto[i].getString("owner");
String url = "https://www.flickr.com/photos/"+user+"/"+id;
println(url);
println("=====================");
}
}
}
textAlign(CENTER, CENTER);
smooth();
}
void draw() {
}
只需使用数组的 length
字段。像这样:
XML[] children = xml.getChildren("photos");
if(children.length > 0){
XML[] childPhoto = children[0].getChildren("photo");
if(childPhoto.length > 0){
String id = childPhoto[0].getString("id");
//rest of your code
}
您可以在 the Processing reference 中找到更多信息。
事实上,您已经在使用 words
数组执行此操作!
我有一段代码可以在 flickr 上进行图像搜索,returns URL 具有该名称的第一张图像。我在 flickr 上搜索的某些词没有任何匹配的图像,所以因为没有图像可以获取,所以我得到一个 ArrayOutOfBoundsException [0]。有什么方法可以让程序跳过特定的单词并继续搜索下一个单词?
到目前为止,这是我的代码:
PImage[] images;
int imageIndex;
XML xml;
String tag = "rutte";
String tag_mode = "all";
String words[];
void setup() {
size(50, 50);
String lines[] = loadStrings("text.txt");
words = split(lines[0], " ");
for (int k = 0; k<words.length; k++) {
String query = "https://api.flickr.com/services/rest/?method=flickr.photos.search&api_key=MY API KEY&tags="+ words[k] + "&sort=relevance&tag_mode="+ tag_mode +"format=rest";
xml = loadXML(query);
XML[] children = xml.getChildren("photos");
if(children.length > 0){
XML[] childPhoto = children[0].getChildren("photo");
for (int i = 0; i < 1; i++) {
String id = childPhoto[i].getString("id"); // this line generates the error :(
String title = childPhoto[i].getString("title");
String user = childPhoto[i].getString("owner");
String url = "https://www.flickr.com/photos/"+user+"/"+id;
println(url);
println("=====================");
}
}
}
textAlign(CENTER, CENTER);
smooth();
}
void draw() {
}
只需使用数组的 length
字段。像这样:
XML[] children = xml.getChildren("photos");
if(children.length > 0){
XML[] childPhoto = children[0].getChildren("photo");
if(childPhoto.length > 0){
String id = childPhoto[0].getString("id");
//rest of your code
}
您可以在 the Processing reference 中找到更多信息。
事实上,您已经在使用 words
数组执行此操作!