【发布时间】:2014-01-16 18:12:39
【问题描述】:
我今天有一些大脑问题,试图让一个蹒跚学步的孩子在家里跑来跑去编写代码并没有帮助。我觉得这是很明显的事情,我应该在 5 分钟内完成,但已经过了一个小时,我不明白。我要休息一下,然后再回来看看,但我希望同时有人能指出我明显遗漏的地方。
我在一个类中有一个方法,它返回一个字符串数组。我希望将返回的数组分配给另一个接受返回的类的方法中的字符串数组,但它似乎不起作用。
示例代码如下:
String[] meta = Scraper.scrape(movie);
for(String i: meta)
{
if (i == null)
{
continue;
}
JOptionPane.showMessageDialog(null, i);
}
String 数组中的值是来自电影的元数据(发行年份、描述、标题等)。没什么长的或花哨的,上面显示的 for 循环在 scrape 方法中可以正常工作,以显示其中的数据返回的字符串数组,但是当我尝试在调用方法中检查返回的数组中的数据时它什么也没做(假设因为返回后数据为空,并进一步假设我在分配返回的数组到新数组)。
今天有人帮助我的大脑启动。谢谢!
更新 - 添加 Scraper 类示例:
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.*;
import org.openqa.selenium.Cookie;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import javax.swing.JOptionPane;
import java.util.Scanner;
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.nio.file.Path;
import java.nio.file.Paths;
public class Scraper {
public static String[] scrape(String movieTitle)
{
String[] results = new String[20];
results[0] = movieTitle;
movieTitle.replace(" ", "+");
// example: http://www.omdbapi.com/?i=&t=Short+Circuit
String queryURL = "http://www.omdbapi.com/?i=&t=" + movieTitle;
WebDriver driver = new ChromeDriver();
driver.get(queryURL);
String page = driver.getPageSource();
Scanner scanner = new Scanner(page);
results[0] = page.substring(page.indexOf("Title") + 8, page.indexOf("\"", page.indexOf("Title") + 9)); // Title
results[1] = page.substring(page.indexOf("Year") + 7, page.indexOf("Year") + 11); // Year released
results[2] = page.substring(page.indexOf("Rated") + 8, page.indexOf("\"", page.indexOf("Rated") + 9)); // Rating
results[3] = page.substring(page.indexOf("Released") + 11, page.indexOf("\"", page.indexOf("Released") + 12)); // Release Date
results[4] = page.substring(page.indexOf("Runtime") + 10, page.indexOf("\"", page.indexOf("Runtime") + 11)); // Running Time
results[5] = page.substring(page.indexOf("Genre") + 8, page.indexOf("\"", page.indexOf("Genre") + 9)); // Genre
results[6] = page.substring(page.indexOf("Director") + 11, page.indexOf("\"", page.indexOf("Director") + 12)); // Director(s)
results[7] = page.substring(page.indexOf("Writer") + 9, page.indexOf("\"", page.indexOf("Writer") + 10)); // Writer(s)
results[8] = page.substring(page.indexOf("Actors") + 9, page.indexOf("\"", page.indexOf("Actors") + 10)); // Starring
results[9] = page.substring(page.indexOf("Plot") + 7, page.indexOf("\"", page.indexOf("Plot") + 8)); // Starring
results[10] = page.substring(page.indexOf("Poster") + 9, page.indexOf("\"", page.indexOf("Poster") + 10)); // Plot
scanner.close();
driver.close();
return results;
}
}
我之前已经使用我现在在调用方法来验证数据时使用的相同 for 循环验证了返回的结果不为 null 或空。 for 循环基本上只是为了检查我并确保我没有遗漏一些明显的东西(比如从错误的索引中解析或其他东西),并且按照我的预期返回正确的数据。
【问题讨论】:
-
关于问题,您返回
String[]的方法是返回预期结果还是返回null? -
您是返回一个字符串还是希望填充传递给函数的字符串?
-
什么是“不工作”?
-
如果是
null,你会得到 NPE。请告诉我们Scrapper#scrape好吗? -
这对我来说很好。所以你说
scrape方法返回后meta数组的值为null?如果是这样,您是否要发布您的scrape方法。
标签: java arrays string return assign