0

これが私が持っているものです。indexStruct 型の ArrayList に名前の値を追加しようとしていますが、その方法がわかりません。名前は文字列です。どんな助けも素晴らしいでしょう。ありがとう!

import java.util.ArrayList;
public class Currentindex {


    public void indexedWords(String currentWord, ArrayList <Indexstruct> currentIndex){     
    int convoMax=currentIndex.size();
    int convoMin=0;
    int placeHolder;
    int strComp;
    //pull words to skip that appear frequently in a typical conversation


    while(convoMax>convoMin){           //binary search 
        placeHolder=(convoMin+convoMax)/2;
        strComp=currentWord.compareToIgnoreCase(currentIndex.get(placeHolder).Word);
        if(strComp==0){
        currentIndex.add(placeHolder, Word);  //<--Where problem occurs     
            break;
        }       
        else if(strComp<0){ 
        convoMax=placeHolder-1;     
        }   
        else{
        convoMin=placeHolder+1;
        }
    }
        //addterm(currentIndex);
        System.out.println(currentIndex);
    }
}
4

2 に答える 2

2

indexStruct 型の ArrayList に名前の値を追加しようとしています。

特定の ArrayList には、タイプの要素のみを追加できますindexStruct。これは、次のいずれかであることを意味します。

  1. クラス indexStruct のオブジェクト。
  2. indexStruct を拡張するクラスのオブジェクト。
  3. indexStruct というインターフェイスを実装するクラスのオブジェクト。

文字列を挿入できる唯一の方法は、indexStruct オブジェクト内に文字列フィールドがある場合です。

そのようなオブジェクトを作成し、名前を割り当てます。次に、このオブジェクトを arraylist に追加します。

currentIndex.add(placeHolder, Word);

呼び出しの問題currentIndex.add(placeHolder, Word); //<--Where problem occursは、Word変数が存在しないことです。

currentWord を placeHolder の特定の要素と比較し、それらが等しい場合 (大文字と小文字を区別せずに) 同じ Word を再度挿入することを想定しています。行を次のように変更すると、これは機能するはずです。

currentIndex.add(placeHolder, currentIndex.get(placeHolder));

基本的に、同じindexStructオブジェクトの別のインスタンスをその位置に入力することになりますplaceHolder

また、繰り返し処理に最適化されているものを調べiteratorsたり、強化したりすることをお勧めします。for loopsArrayLists

見る:

于 2013-06-14T13:10:18.460 に答える
0

使用している

  1. ArrayList: Indexstruct のオブジェクトを格納できる配列リスト。
  2. そして、あなたは indexstruct.word (おそらく私が推測するように文字列) を保存しようとしています。

Indexstruct.word のタイプが ArrayList と互換性がないため、問題が発生しています。

これを試してください Add currentIndex.add(placeHolder, new Indexstruct(word)); または、word を新しく構築された Indexstruct オブジェクトに設定し、そのオブジェクトを追加します。

于 2013-06-14T13:12:00.790 に答える