java读取txt文件然后赋值二维数组

2024-12-04 20:40:36
推荐回答(3个)
回答1:

java读取txt文件然后赋值二维数组实现方法如下:

package shi;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

public class Test13 {

   /**
    * 读取文件
    * @param filePath
    * @return
    */
   public static  List  readTxtFile(String filePath) {
       List list = new ArrayList();
       try {
           String encoding = "UTF-8";
           File file = new File(filePath);
           if (file.isFile() && file.exists()) {
               InputStreamReader read = new InputStreamReader(
                       new FileInputStream(file), encoding);
               BufferedReader bufferedReader = new BufferedReader(read);
               String lineTxt = null;
               while ((lineTxt = bufferedReader.readLine()) != null) {
                   if (!lineTxt.startsWith("#"))
                       list.add(lineTxt);
               }
               read.close();
           } else {
               System.out.println("找不到文件");
           }
       } catch (Exception e) {
           System.out.println("出错了");
           e.printStackTrace();
       }
       return list;

   }
   
   /**
    * 创建二维数组
    * @param list
    * @return
    */
   public static String[][] createArray(String filePath){
       List list = readTxtFile(filePath);
       String array[][] = new String[list.size()][];
       for(int i=0;i            array[i] = new String[3];
           String linetxt=list.get(i);
           String[] myArray = linetxt.replaceAll("\\s+", "@").split("@");
           for(int j=0;j                if(j<3){
                   array[i][j]=myArray[j];
               }
           }
       }
       return array;
   }
   
   /**
    * 打印数组
    * @param array
    */
   public static void printArray(String array[][]){
       for(int i=0;i            for(int j=0;j                if(j!=array[i].length-1){
                   System.out.print("array["+i+"]["+j+"]="+array[i][j]+",");
               }
               else{
                   System.out.print("array["+i+"]["+j+"]="+array[i][j]);
               }
               
           }
           System.out.println();
       }
   }


   public static void main(String args[]) {
       String array[][] = createArray("F:\\test1.txt");
       printArray(array);
   }
   
   
}

回答2:

java的数组不会自动扩展,必须在初始化时指定大小。
你可以用2个list来当作2维数组用。
也可以做如下修改,一开始给数组赋一个足够大的空间。
Double[][] arrayd = new Double[100][100];

回答3:

异常里说清楚了是31行:
arrayd[lin][i]=java.lang.Double.valueOf(arr[i]);
当数组arr[i]为null时候所导致的异常,你可以加个判断
比如
if (arr[i]!=null)
arrayd[lin][i]=java.lang.Double.valueOf(arr[i]);
_________________
以下是jdk里查的Double类的valueOf方法的信息:
public static Double valueOf(String s)
throws NumberFormatException返回保持用参数字符串 s 表示的 double 值的 Double 对象。
如果 s 为 null,那么抛出 NullPointerException 异常。