0

より大きな ArrayList とは別に、要素を ArrayList に入れる階層ブロックを作成しようとしています。ブロックが行うことは、既存のテキスト入力を取得し、テキストのすべての行を ArrayList の要素に追加することです。次に、各行が文字列の ArrayList として作成され、各文字列がその行の単語になります (これを実行するために、スペース (" ") で文字列分割を使用しました)。

私の問題は、これを作成しようとするときに Arrays.asList を使用する必要があることです (文字列分割がリストを返すため)

Action Syllables = new AbstractAction("Syllables") {
    public void actionPerformed(ActionEvent e) {
        ArrayList<String> text = LinetoList(area);
        //"text" is a String ArrayList of every "line" in a piece of text
        //LinetoList is a method that returns an ArrayList based on each new line
        ArrayList<ArrayList> words = new ArrayList();
        for (int i = 0;  i < text.size(); i++) {
            ArrayList sentence =  (ArrayList) Arrays.asList(text.get(i).split(" "));
            /*Sentence is currently a list, however, changing the type to an Array 
             * or Arraylist Changes nothing */
            words.add(sentence);
            }
        for (int k = 0; k < words.size(); k++) {
            for (int i= 0; i < words.get(k).size(); i ++) {
                System.out.println(words.get(k).get(i));
            }
        }
    }
};

これは、エラーを返す私の元のメソッドでした。その後、少し調整しましたが、エラーは返されなくなりましたが、何も返されません。

Action Syllables = new AbstractAction("Syllables") {
    public void actionPerformed(ActionEvent e) {
        ArrayList<String> text = LinetoList(area);
        //"text" is a String ArrayList of every "line" in a piece of text
        //LinetoList is a method that returns an ArrayList based on each new "line"
        ArrayList<ArrayList> words = new ArrayList();
        for (int i = 0;  i < text.size(); i++) {
            ArrayList <String> sentences = new ArrayList();
            String sentence[] =  text.get(i).split(" ");
            sentence = sentences.toArray(sentence);
            /*Sentence is currently a list, however, changing the type to an Array 
             * or Arraylist Changes nothing */
            words.add(sentences);
            }
        if (words.size() ==  0)
        {System.out.println("Theres nothing here"); }
        else {
        for (int k = 0; k < words.size(); k++) {
            for (int i= 0; i < words.get(k).size(); i ++) {

                System.out.println(words.get(k).get(i));}

            }
        }
    }
};

解決策へのアプローチ方法に関するフィードバックやアイデアは大歓迎です。

編集: 一部の人々は LinetoList 関数を求めました。プログラムの大部分は、文字列の ArrayLists を使用しているため、ここで頻繁に使用されています。

private static ArrayList<String> LinetoList(JTextArea textArea) {

  String s[] = textArea.getText().split("\\r?\\n");
    ArrayList<String>arrList = new ArrayList<>(Arrays.asList(s)) ;
    return arrList;
}
4

3 に答える 3

0

私は実際にはフォローしていません:

   String sentence[] =  text.get(i).split(" "); // here you have array
    sentence = sentences.toArray(sentence); // WTF?

そして今、その WTF マークについて -sencenceの内容で配列を埋めていますsentences。何が良いのか、宣言が表示されませんが、sentences空だと思いますか?そのため、常に空になっていることがわかります。私に関しては、奇妙なコードと役に立たないコメントがたくさんあります。

于 2015-03-23T13:03:38.900 に答える