使字符串可访问程序其余部分的问题

时间:2019-01-22 05:50:16

标签: processing

String[] input;
String output;

void setup() {

    selectInput("Select a file to process:", "fileSelected")
    println("########");
}

void draw() {

    println(output);
}

void fileSelected(File selection) {

    if(selection == null) {
        println("Window was closed or the user hit 'cancel.'");
    } else {
        String filepath=selection.getAbsolutePath();
        input=loadStrings(filepath);
        println(input);
        input.equals(output);
        println(output);
    }
}

很抱歉,如果它看起来很草率,我正在手机上键入它,并且滚动查看我编写的内容时遇到问题。我也无法获得具有足够数量空格的代码来满足“缩进代码纳粹”的代码,因此我不得不删除花括号。我仍然没有弄错,但是经过30分钟的战争,它最终还是接受了这一点。

我正在从事一个游戏项目,该项目需要将大型整数矩阵加载到2D数组中。我正在使用处理3.4,并且正在使用selectInput()方法(如参考资料中所示),并使用loadStrings()将文件的内容加载到字符串中,如下所示。

我无法运行此代码,因为如果我尝试打印“输入”的内容,则会收到讨厌的“空指针异常”。我不知道为什么会这样,尤其是因为变量是全局变量。因此,我声明使用“输出”变量来解决空指针问题。我打印了input[]output的输出,以便可以看到它们已经加载,然后将println(output);放在draw()中以查看是否可以访问它们。我得到的只是打印到控制台上的“ null”(不带引号)。

看来output字符串始终为空。即使我确定已将其声明为“全局级别”变量,该变量仍为null。我需要在公共/全局级别上可以访问该变量,以便游戏代码的其余部分可以将字符串转换为矩阵(由于它并不重要,因此未在此处包括在内)。

如何加载此字符串,以便其余代码可以使用它?我在做错什么吗?

1 个答案:

答案 0 :(得分:0)

输出字符串始终为空,因为您没有将输入复制到其中,equals方法不起作用。我修复了您的代码,效果很好

String[] input;
String output;

void setup() {
    selectInput("Select a file to process:", "fileSelected");
    println("########");
}

void draw() {
    if(output!=null)
    println(output);
}

void fileSelected(File selection) {

    if(selection == null) 
    {
        println("Window was closed or the user hit 'cancel.'");
    } 
    else {
        String filepath=selection.getAbsolutePath();
        input=loadStrings(filepath);

        for(int i=0;i<input.length;i++)
        output+=input[i]+"\n";       
    }
}