Java 从带有appended字符的字符串返回NULL
字符串dexVersion返回null 我尝试了很多方法,比如获取一个字符串并在其上附加一个readData[]字符,效果很好,我还尝试查看它是否是字符vs.字符,但结果没有定论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
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]
%