0

LinkedList を含むコードがあります。以下

topic.read() 
topic.delete() and 
topic.send() 

Topic と呼ばれる LinkedList のメソッドです。これらは GUI デザインに実装されています。メソッド

 topic.read(name) 
 topic.send(text) 

正常に動作していますが、

topic.delete(index) 

私を投げている

IndexOutOfBoundsException

メソッドについて簡単に説明します。read(name) と send(text) は String パラメーターを取り、トピックとそのメッセージのリストを読み取り、受容的にトピックにメッセージを送信します。delete(index) は、インデックスで指定されたメッセージをトピックから削除する必要があります。ただし、サイズが 0 であるというエラー メッセージが表示されます。

関連するピース:(このピースで十分だと思います。必要に応じてさらにピースを追加します)

public void act(String s)
{
    topic = new Topic(s, topics);
    if (s.equals("Read"))
        setEditorText(topic.read(readText()));
    else if (s.equals("Delete"))
        topic.delete(indexText());
    else if (s.equals("Send"))
    {   
        topic.send(getEditorText(), sendText());
        clear();
    }
}

これらをこの質問に追加しました:

private JTextField indexText = new JTextField(10);
public int indexText()
{
    return Integer.parseInt(indexText.getText());
}

public class Topic {
    private LinkedList<String> messages = new LinkedList<String>();

    public void delete(int index)
    {   
    messages.remove(index - 1);
    }

}
4

2 に答える 2

0

こんにちはディルシャット・アブドゥワリ!

インデックス サイズが 0 であるという応答を受け取った場合は、オブジェクトがリストに追加されていないか、まだ追加されていないことを意味します。そのため、インデックス値 2 のオブジェクトを削除します。たとえば、スローします。インデックスのサイズは 0 のみであるため、IndexOutOfBoundsException です。リストに値を追加していることを確認してください。そうしないと、値が入力されません。

List.size() 内に収まる値をチェックするステートメントの場合、@nitegazer2003 を使用することをお勧めします。リストのサイズを超える整数が呼び出されない場合、IndexOutOfBoundsException が発生します。

forループでリストの値を再確認してください。

for(int i = 0; i < list.size(); i++)
    System.out.println(list.get(i)); //Print the Strings in the list (Assuming its a list of Strings)

または

for(int i = 0; i < list.size(); i++)
     System.out.println(list.getSize()); //Test the size of the list

Index 0 と OutOfBoundsException に関する 類似の質問 最後に投稿された回答では、同様の回答が説明されています。ただし、彼のコードをすべて読む必要はありません。

Oracle's List List とその機能に関するドキュメントの優れたソースです。

これがあなたを正しい方向に導くか、助けてくれることを願っています! 幸運を!

于 2013-05-25T06:13:48.807 に答える