0

次の形式のファイルから読み取っています: 名前: 症状: 原因: 治療: 率: 予後

合計 21 のエントリがありますが、ファイルから読み取って .split(":"); を使用しようとすると、出力は毎回変わりますが、常に [Ljava.lang.String;@614951ff. ポインターまたはメモリアドレスだと思いますが、文字列値が必要です。ただし、例外が発生していないため、どこが間違っているのかわかりません。このメソッドの目的は、ファイルを読み取り、選択した特定のファイル行の区切り文字を使用して配列に分割することです。

public String[] readCancer(int row) {
    cancers = new String[22];
    FileInputStream fis;
    InputStreamReader isr;
    BufferedReader br = null;
    String eachCancer;
    String[] splitCancer = null;
    int j = 0;
    try {
        fis = new FileInputStream(myData);
        isr = new InputStreamReader(fis);
        br = new BufferedReader(isr);
        input = new Scanner(br);
        while(input.hasNext() && j < 23) {
            cancers[j++] = input.nextLine();
        }
        eachCancer = cancers[row].toString();
        splitCancer = eachCancer.split(":");
    } catch (IOException iox) {
        JOptionPane.showMessageDialog(null, "Problem with file input");
    } finally {
        try {
            if(br != null) {
                br.close();
            }
        } catch (IOException iox) {
            JOptionPane.showMessageDialog(null, "Problem closing the file");
        }
    }
    return splitCancer;
}
4

4 に答える 4

0

ファイル全体を貼り付けようとしましたが、恐ろしいテキスト ブロックになったので、ここに 2 行を示します。各行の形式は同じですが、長さが異なります。

ファイルの一般的な形式は、名前:症状:原因:治療:率:予後です。

一部の疾患については不明であるため、率は文字列であり、既知の場合でも、率は必ずしも 250,000 から外れているとは限りません。1,000,000 または 100,000 などの範囲外の場合もあります。

急性前骨髄球性白血病 : あざができやすい、急速な内出血、疲労、貧血、頻繁な発熱、感染症、血栓 : PML および RARA 遺伝子 : 薬、化学療法 : 25 万人に 1 人 : 良好

家族性円柱腫症 : 多数の皮膚腫瘍、潰瘍、感染症、視力障害、聴覚障害、嗅覚障害、バランス障害 : CYLD 遺伝子 : 手術、化学療法 : 不明 : 不明

私の最近のコード試行は、split() を使用した異常な出力です。

癌と分割の 2 つの配列は、メソッドの外部で宣言されたフィールド変数としてのプライベート String[] です。変数 myData は、どのメソッドの外部でもフィールド変数として宣言されているプラ​​イベート ファイルです。ファイルパスが正しいことを確認しました。

メソッドを呼び出すメイン メソッド:

public static void main(String[] args) {  
    CancerGUI _gui = new CancerGUI();
    String[] resultCancer;
    resultCancer = _gui.readCancer();
    //System.out.println(resultCancer);
    System.out.println(Arrays.toString(resultCancer));
}

メイン メソッドで呼び出して、String[] が正しく返されるかどうかをテストするだけです。それが完了したら、データを GUI に追加する別の方法でそれを呼び出します (この部分については、方法を知っており、インストラクターと教科書からの例に従うことをかなり確信しています)。

于 2013-04-13T17:43:11.593 に答える