Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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 为什么不是';我的数组填充是否正确?_Java_Arrays_Text Files - Fatal编程技术网

Java 为什么不是';我的数组填充是否正确?

Java 为什么不是';我的数组填充是否正确?,java,arrays,text-files,Java,Arrays,Text Files,我正在用Java为一个游戏编写代码。具体地说,我正在使用由.txt文件中的字符填充的字符数组创建关卡。我的问题是数组没有按应有的方式填充,最后一行仍然是空的。我无法解决这个问题,因此任何形式的帮助都会被欣然接受,下面是有问题的代码块: public static void main(String[] args) throws IOException{ char background[][] = new char [14][20]; try { FileInputStream fil

我正在用Java为一个游戏编写代码。具体地说,我正在使用由.txt文件中的字符填充的字符数组创建关卡。我的问题是数组没有按应有的方式填充,最后一行仍然是空的。我无法解决这个问题,因此任何形式的帮助都会被欣然接受,下面是有问题的代码块:

public static void main(String[] args) throws IOException{

char background[][] = new char [14][20];

try {

    FileInputStream fileinput = new FileInputStream("background.txt");
        int r;
        for(int i=0;i<=13;i++){
            for(int j=0;j<19;j++){
                while((r = fileinput.read()) != -1){
                    char c = (char) r;
                    background[i][j] = c;
                    break;
                }
            }
        }
        fileinput.close();
    }

    catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    for (int i=0;i<=13;i++){
        for(int j=0;j<=19;j++){
            System.out.print(background[i][j]);
        }
    }
}
publicstaticvoidmain(字符串[]args)引发IOException{
字符背景[][]=新字符[14][20];
试一试{
FileInputStream fileinput=newfileinputstream(“background.txt”);
INTR;

对于(inti=0;i您偶然发现的一个条件,我已在更改的行上进行了注释


正如有人在评论中提到的那样,您可能会发现将循环条件视为(int i=0;i的
是有益的,因为您无意中遇到了一个条件,我已在更改的行上进行了评论


正如有人在评论中提到的,您可能会发现将循环条件视为
for(int i=0;i为什么这里需要多个for循环是有益的。如果您想从文件中读取字符,可以使用缓冲读取器,此矩阵可以在一行代码中创建,如
while((bufferedReader.read)(后台[i] )!=-1)&(++i<14)){}
。此外,您使用while循环读取一个字符,然后在其中执行无条件中断语句不是一个好的做法(我认为)。试试看

publicstaticvoidmain(字符串[]args)引发IOException{
字符背景[][]=新字符[14][20];
试一试{
FileReader FileReader=newfilereader(“background.txt”);
BufferedReader BufferedReader=新的BufferedReader(文件阅读器);
int i=0;
而((bufferedReader.read(background[i])!=-1&&(++i<14)){}//这样创建了2D数组
bufferedReader.close();
fileReader.close();
}catch(filenotfounde异常){
e、 printStackTrace();
}

for(int i=0;i为什么这里需要多个for循环。如果你想从文件中读取字符,你可以使用缓冲读取器,这个矩阵可以在一行代码中创建,比如
while((bufferedReader.read(background[i])!=-1&(++i<14)){}
。另外,您使用while循环读取一个字符,然后在其中执行无条件中断语句不是一个好做法(我认为)。试试看

publicstaticvoidmain(字符串[]args)引发IOException{
字符背景[][]=新字符[14][20];
试一试{
FileReader FileReader=newfilereader(“background.txt”);
BufferedReader BufferedReader=新的BufferedReader(文件阅读器);
int i=0;
而((bufferedReader.read(background[i])!=-1&&(++i<14)){}//这样创建了2D数组
bufferedReader.close();
fileReader.close();
}catch(filenotfounde异常){
e、 printStackTrace();
}

for(int i=0;我应该指出限制for循环的标准方法是填充数组的内部循环条件,与输出数组的条件不同。这意味着从不填充
background[][19]
。但是您正在输出它。应该指出限制循环的标准方法是填充数组的内部循环条件,与输出数组的条件不同。这意味着您从不填充
背景[][19]
。但是您正在输出它。如果您有一个带有调试器的IDE,那么学习如何调试和单步执行您自己的代码将是有益的。如果您有一个带有调试器的IDE,那么学习如何调试和单步执行您自己的代码将是有益的。
public static void main(String[] args) throws IOException{

char background[][] = new char [14][20];

try {

    FileInputStream fileinput = new FileInputStream("background.txt");
        int r;
        for(int i=0;i<=13;i++){
            for(int j=0;j<=19;j++){//<<THIS LINE WAS CHANGED
                while((r = fileinput.read()) != -1){
                    char c = (char) r;
                    background[i][j] = c;
                    break;
                }
            }
        }
        fileinput.close();
    }

    catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    for (int i=0;i<=13;i++){
        for(int j=0;j<=19;j++){
            System.out.print(background[i][j]);
        }
    }
}
public static void main(String[] args) throws IOException {

    char background[][] = new char[14][20];
    try {
        FileReader fileReader = new FileReader("background.txt");
        BufferedReader bufferedReader = new BufferedReader(fileReader);

        int i=0;
        while((bufferedReader.read(background[i]) != -1) && (++i < 14)){ } // This like created your 2D array

        bufferedReader.close();
        fileReader.close();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }
    for (int i = 0; i <= 13; i++) {
        for (int j = 0; j <= 19; j++) {
            System.out.print(background[i][j]);
        }
    }
}