将返回的字符串数组分配给新的字符串数组-Java

将返回的字符串数组分配给新的字符串数组-Java,java,arrays,string,return,assign,Java,Arrays,String,Return,Assign,我今天脑子有点问题,试着用一个蹒跚学步的孩子在家里跑来跑去的代码是没有用的。我觉得这是很明显的事情,我应该在5分钟内完成,但已经一个小时了,我不明白。我打算休息一下,回来看看,但我希望在这段时间里,有人能指出我明显的缺失 我在一个类中有一个返回字符串数组的方法。我希望将返回的数组分配给接受返回的另一个类的方法中的字符串数组,但它似乎不起作用 下面是示例代码: String[] meta = Scraper.scrape(movie); for(Stri

我今天脑子有点问题,试着用一个蹒跚学步的孩子在家里跑来跑去的代码是没有用的。我觉得这是很明显的事情,我应该在5分钟内完成,但已经一个小时了,我不明白。我打算休息一下,回来看看,但我希望在这段时间里,有人能指出我明显的缺失

我在一个类中有一个返回字符串数组的方法。我希望将返回的数组分配给接受返回的另一个类的方法中的字符串数组,但它似乎不起作用

下面是示例代码:

String[] meta = Scraper.scrape(movie);
    
            
    for(String i: meta) 
    {
        if (i == null)
            {
                continue;
            }
        JOptionPane.showMessageDialog(null, i);

    }
字符串数组中的值是电影发行年份、描述、标题等的元数据。没有长的或奇特的内容,上面显示的for循环在scrape方法中可以很好地显示返回字符串数组中的数据,但是,当我尝试在调用方法中检查返回数组中的数据时,它什么也不做,假设因为返回后数据为null,并且进一步假设我在将返回数组分配给新数组时出错

今天有人帮我开动脑筋。谢谢

更新-添加刮板类示例:

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循环基本上就是为了检查我是否正常,并确保我没有遗漏一些明显的东西,比如从错误的索引中进行解析或其他什么,并且按照我的预期返回正确的数据。

我想知道这是否与您使用的是静态引用这一事实有关?老实说,我看不出一个真正的原因,为什么这不会工作,他们的方式,你有它。编辑:我只是尝试了几种不同的方法,用两个类同时使用静态和非静态方法来实现这一点,没有任何问题。也许您可以从接收返回数组的调用类中显示更多代码

不确定这是否会导致URL查询出现问题,但您没有使用。请正确替换。您当前正在尝试使用它修改不可变字符串。记住.replace不会修改字符串,但会返回一个新的修改过的字符串。因此,与此相反:

movieTitle.replace(" ", "+");       <---
String queryURL = "http://www.omdbapi.com/?i=&t=" + movieTitle;

另外,我不确定你使用扫描仪的目的是什么,但你实际上并没有使用它。

答案是我的大脑没有打开。我已经在测试代码中设置了电影标题的默认值。但是,我在设置GUI中输入的变量(默认为电影标题)之前设置了它。所以我设置了它,GUI重置了它,由于某种原因,我查询的站点无法在其数据库中找到作为有效电影标题的电影标题

基本上,我一直忙着分心和沉默,没能看到什么就在我面前


谢谢你们试图解决我的愚蠢

关于这个问题,您返回字符串[]的方法是返回预期结果还是仅返回null?您是返回字符串还是期望传递给函数的字符串被填充?什么不起作用?如果它为null,您将得到NPE。你能给我们看看刮刀吗?我觉得这个不错。你是说在scrape方法返回后,元数组的值是空的?如果是的话,你想发布你的刮法吗?太棒了。我没有意识到这一点,因为网站实际上并不关心它是否得到或+,它对待他们是一样的。扫描仪没有被使用。它只是我之前试过的东西留下的残渣,还没有清理干净。谢谢
movieTitle = movieTitle.replace(" ", "+");