Java can';我没有大于10*10个字符的文件

Java can';我没有大于10*10个字符的文件,java,Java,是什么使得它只能输入10*10个文本文件 package game; import java.io.*; import java.util.*; public class Level { static public void main(String[] args) throws IOException { File f = new File("Data1.txt"); int[][] m = Map(f); for (int x = 0; x < m.leng

是什么使得它只能输入10*10个文本文件

package game;

import java.io.*;
import java.util.*;

public class Level {

static public void main(String[] args) throws IOException {
    File f = new File("Data1.txt");
    int[][] m = Map(f);
    for (int x = 0; x < m.length; x++) {
        for (int y = 0; y < m[x].length; y++) {
            System.out.print(m[x][y]);
        }
        System.out.println();
    }
}

public static int[][] Map(File f) throws IOException {

    ArrayList line = new ArrayList();
    BufferedReader br = new BufferedReader(new FileReader(f));
    String s = null;
    while ((s = br.readLine()) != null) {
        line.add(s);
    }
    int[][] map = new int[line.size()][];
    for (int i = 0; i < map.length; i++) {
        s = (String) line.get(i);
        StringTokenizer st = new StringTokenizer(s, " ");
        int[] arr = new int[st.countTokens()];
        for (int j = 0; j < arr.length; j++) {
            arr[j] = Integer.parseInt(st.nextToken());
        }
        map[i] = arr;
    }
    return map;
}
}
打包游戏;
导入java.io.*;
导入java.util.*;
公营班级{
静态公共void main(字符串[]args)引发IOException{
文件f=新文件(“Data1.txt”);
int[]m=Map(f);
对于(int x=0;x
如果我放入一个文本文件 10*10个或更少字符有效 否则它会产生一个numberformatexception

固定的

包装游戏

import java.io.*;
import java.util.*;

public class Level {

    static public void main(String[] args) throws IOException {
        File f = new File("Data1.txt");
        int[][] m = Map(f);
        for (int x = 0; x < m.length; x++) {
            for (int y = 0; y < m[x].length; y++) {
                System.out.print(m[x][y]);
            }
            System.out.println();
        }
    }

    public static int[][] Map(File f) throws IOException {

        ArrayList line = new ArrayList();
        BufferedReader br = new BufferedReader(new FileReader(f));
        String s = null;
        while ((s = br.readLine()) != null) {
            line.add(s);
        }
        int[][] map = new int[line.size()][];
        for (int i = 0; i < map.length; i++) {
            s = (String) line.get(i);
            char[] m = s.toCharArray();
            String[] n = new String[m.length];
            for (int t = 0; t<m.length;t++)
            {
                n[t] = ""+m[t];
            }

            int[] arr = new int[m.length];
            for (int j = 0; j < arr.length; j++) {
                arr[j] = Integer.parseInt(n[j]);
            }
            map[i] = arr;
        }
        return map;
    }
}
import java.io.*;
导入java.util.*;
公营班级{
静态公共void main(字符串[]args)引发IOException{
文件f=新文件(“Data1.txt”);
int[]m=Map(f);
对于(int x=0;x因为(int t=0;t与注释中的注释相反,只要有足够的空间,您的程序似乎可以处理大文件和长行

我认为您的问题实际上是,每当文本文件具有超过10个字符的标记时,它就会抛出NumberFormatException

这是因为
Integer.MAX_INT
是2147483647,当作为字符串写入时,它有10个字符,而
Integer.parseInt
无法处理比这更多的数字


您在空间上进行拆分,希望所有内容都解析为整数,而您的一些数字对于Java的整数数据类型来说太大。

Int的最大值是:2147483647或2147483647,不带逗号。这是10个字符。尝试将11个字符的字符串解析为Int将导致数字超出Int的最大值值,因此是NumberFormatException。

您的NumberFormatException位于哪一行?另外,我建议您使用
StringTokenizer
String.split(String regex)
进行拆分。NumberFormatException从哪里抛出,
Integer.parseInt()
?另外,请给出一个输入文件的示例。33:(int j=0;jBufferedReader br=new BufferedReader(new FileReader(f),10*10);
只要试着增加缓冲区数据。如果你用
扫描器而不是
BufferedReader
来读取文件会发生什么?