使用Arraybound警告从文件和2d数组中读取

时间:2014-09-19 17:05:23

标签: java arrays file

import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStreamReader;

public class ReadFromFile {

    public static void main(String[] args) {
        String[][] clothesDb = new String[10][10];
        try {
            FileInputStream fis = new FileInputStream(
                    "C:/Users/irapple/Desktop/Project db/clothes.txt");
            DataInputStream dis = new DataInputStream(fis);
            BufferedReader br = new BufferedReader(new InputStreamReader(dis));
            String str;
            while ((str = br.readLine()) != null) {
                System.out.println(str);
            }

            int count = 0;
            while ((str = br.readLine()) != null) {
                String[] dividedLine = str.split("\t");
                for (int i = 0; i < 10; i++) {
                    clothesDb[count][i] = dividedLine[i];
                }
                count++;
                System.out.println(clothesDb);
            }

        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

}


>>>ID   Order       Type    Color       Price 
>>>1    M-T-Shirt   A       Red         20000$
>>>2    W-T-Shirt   B       Blue        30000$
>>>3    K-T-Shirt   C       Yellow      35000$
>>>4    M-Pans      D       Green       75000$
>>>5    W-Pans      E       Gray        80000$
>>>6    K-Pans      F       Purple      60000$
>>>7    Hat         G       White       15000$

这就是我想用它作为二维数组而我不知道如何使用拆分方法 如果我使用\ t代替单词而\ t \ t \ t代替其他单词,我该怎么办。最后一个问题是Scanner Class如何为我的porpuse提供帮助(将此文件生成为2d数组)?

1 个答案:

答案 0 :(得分:0)

在您的情况下,它看起来更像是固定大小,因此我建议您使用sub string

yoursting.subString(startIndex,endIndex);

填充你的阵列。

你的例子: 用i去除内部for循环并用这样的代码替换它

clothesDb[count][0] = str.subString(0,20).trim();
clothesDb[count][1] = str..subString(21,40).trim();
clothesDb[count][2] = str..subString(41,60).trim();
clothesDb[count][3] = str..subString(61,str.length).trim();