-3

Java でファイルの読み取りに問題があります。たとえば、次のように作成されたファイルがあります。

2,3
2
5
2
3
4

最初の行は 2 つの配列 A と B の長さを表し、もう 1 行は各配列の要素であるため、A[2,5] B[2,3,4] です。この入力を読み取って 2 つの配列に保存できます

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 が入力にない可能性があることです。前もって感謝します

4

2 に答える 2

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];

また

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

ありがとう

于 2013-08-19T07:51:36.400 に答える
1

あなたの質問はあまり明確ではありませんが、最初の行の 3 番目の要素を保存したい場合は、配列の長さを確認してくださいdelims[]

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

配列に 2 つ以上の要素がある場合は、3 番目の要素を保存します (配列は 0 から始まります)。

質問に答えていない場合は申し訳ありません。さらに精度が必要な場合は、コメントできます。

于 2013-08-19T07:48:33.570 に答える