Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从带有appended字符的字符串返回NULL_Java_String_Char_Character_Arrays - Fatal编程技术网

Java 从带有appended字符的字符串返回NULL

Java 从带有appended字符的字符串返回NULL,java,string,char,character,arrays,Java,String,Char,Character,Arrays,字符串dexVersion返回null 我尝试了很多方法,比如获取一个字符串并在其上附加一个readData[]字符,效果很好,我还尝试查看它是否是字符vs.字符,但结果没有定论 import java.io.*; import java.net.*; import java.lang.*; import java.util.*; class main { public static void main(String args[]) { String version

字符串dexVersion返回null

我尝试了很多方法,比如获取一个字符串并在其上附加一个readData[]字符,效果很好,我还尝试查看它是否是字符vs.字符,但结果没有定论

import java.io.*;
import java.net.*;
import java.lang.*;
import java.util.*;

class main {
    public static void main(String args[]) {

        String version = new String("1.0 (Alpha)");

        main main = new main();
        dataHandling data = new dataHandling();
        boolean doneProcessing = false;
        int x = 0,y = 0;
        String dexVersion = new String("v:");
        String pokemon[][] = new String[700][10];
        System.out.println(":");
        System.out.println("POKeUTILITY:MAIN_THREAD_STARTED_IN_STATIC_METHOD_MAIN");
        System.out.println("POKeUTILITY:STARTING_VERSION=" + version);
        System.out.println("POKeUTILITY:DOWNLOADING_POKeDEX_DATA");
        data.download();
        System.out.println("POKeUTILITY:READING_POKeDEX_DATA");
        char readData[] = data.read();
        System.out.println("POKeUTILITY:PROCESSING_POKeDEX_DATA");
        while (doneProcessing = false) {
            if ((readData[x]) == '{') {
                x++;
                while ((readData[x]) != '}') {
                    dexVersion += readData[x];
                    x++;
                }
            }
//            if ((readData[x]) == '[') {
//                x++;
//                while ((readData[x]) != ']') {
//                    dexVersion += readData[x];
//                    x++;
//                }
//            }
            if ((readData[x]) == '%') doneProcessing = true;
            x++;
        }
        System.out.println(dexVersion + ".");
    }
}
class dataHandling {
    public void download() {
        BufferedInputStream dFile;
        FileOutputStream wFile;
        try {
            dFile = new BufferedInputStream(new URL("http://www.harry.technology/pokedex").openStream());
            wFile = new FileOutputStream("pokedex");
            int x = 0,y = 0;
            while ((x = dFile.read()) != -1) {
                wFile.write(x);
            }
            wFile.close();
            dFile.close();
        } catch (IOException e) {
            System.out.println("POKeUTILITY:ERROR_" + e);
            System.exit(0);
        }
    }
    public char[] read() {
        int x = 0,y = 0;
        char input[] = new char[2000];
        String output = new String("");
        try {
            FileReader file = new FileReader("pokedex");
            while ((x = file.read()) != -1) {
                input[y] = convert(x);
                y++;
            }
            file.close();
        } catch (IOException e) {
            System.out.println("POKeUTILITY:ERROR_" + e);
            System.exit(0);
        }
        return input;
    }
    public char convert(int a) {
        switch (a) {
            ASCII SWITCH STATEMENT (left out because of length)
        }
    }
}
以下是文件“pokedex”:


您可以通过访问在我的服务器上看到它:

此代码存在各种非常重要的问题,尤其是您的
read()
方法总是返回1000个字符,无论输入多长。此外,还不清楚您试图诊断该问题的原因。您是否在调试器中完成了它?此外,这一行:
while(doneProcessing=false)
意味着您永远不会进入循环,因为您正在将
doneProcessing
设置为
false
,并将其用作条件。你的意思是
while(doneProcessing==false)
或者更好的
while(!doneProcessing)
。所以我希望输出的最后一行是
v:。
。此外,您应该了解如何在finally块中关闭资源,或者如果您使用的是Java 7或更高版本,则使用try-with-resources语句,并且不要一直创建新字符串,而不是
String x=new-String(“某物”)只需使用
String x=“something”谢谢,我确实检查了整个调试器,并尝试处理我的一个工作程序中的代码。这是个明显的错误!
{1.0}
[001,Bulbasaur]
%