在java中读取文件

时间:2013-08-19 07:39:32

标签: java bufferedreader

我在java中读取文件时遇到问题: 我有一个这样的文件,例如:

2,3
2
5
2
3
4

其中第一行表示2个数组A和B的长度,另一个是每个数组的元素,所以:A [2,5] B [2,3,4]。我可以读取此输入并保存为两个数组

public static void main(String[] args) throws IOException{
        int A[] = null;
        int B[] = null;
        //int C[] = null;
        //int k = 0;
        try {
// Open the file that is the first
// command line parameter
            FileInputStream fstream = new FileInputStream("input.txt");
            BufferedReader br = new BufferedReader(new InputStreamReader(fstream));
            String strLine = br.readLine(); // step 1

            if (strLine != null) {
                String[] delims = strLine.split(","); // step 2 split first line

// step 3 initialization array A and B
                A = new int[Integer.parseInt(delims[0])];
                B = new int[Integer.parseInt(delims[1])];
                //C = new int[Integer.parseInt(delims[2])]; //PROBLEMA SE NON CE K DA ERRORE RISOLVERE
                //k = 0;
                //k = C.length;


// step 4 Load A element from file input
                for (int i = 0; i < A.length; i++)
                    A[i] = Integer.parseInt(br.readLine());

// step 5 load B element form file input
                for (int i = 0; i < B.length; i++)
                    B[i] = Integer.parseInt(br.readLine());

                br.close();
            }// step 6
        } catch (Exception e) {// Catch exception if any
            System.err.println("Error: " + e.getMessage());
        }
//Sort Array with MergeSort

System.out.println(Arrays.toString(A));
System.out.println(Arrays.toString(B));

但我的问题是输入可能在第一行有另一个我必须保存的元素k。

2,3,5
2
5
2
3
4

和A [2,5] B [2,3,4]我想保存k = 5,但我不知道我该怎么做。问题是K可能不在输入中。 提前致谢

2 个答案:

答案 0 :(得分:1)

您的问题不是很明确,但如果您想在第一行保存第三个元素,请检查数组delims[]的长度。

String[] delims = strLine.split(",");
if (delims.length > 2) {
  K = delims[2]
}

如果数组中有两个以上的元素,则保存第三个元素(数组从0开始)。

很抱歉,如果我没有回答您的问题。如果您想进一步精确,可以发表评论。

答案 1 :(得分:1)

您可以检查delims数组的长度。

int length = delims.length;
int k=0,a =0, b=0;

if (length == 3) {
  k = Integer.parseInt(delims[2]);
} 
  a = Integer.parseInt(delims[0]);
  b = Integer.parseInt(delims[1]);

A = new int[a];
B = new int[b];

OR

int k = delims.length == 3 ? Integer.parseInt(delims[2]) : 0;

由于