Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

配列内をすべて削除したい。

配列内をすべて削除したいです。
clearを使用して削除を試みたのですがうまくいきません。
どこのあたりを改善すればいいでしょうか?

エラーコード内容
studya\a21\A21_exec.java:40: エラー: シンボルを見つけられません
                items[addNumber].clear();
                                ^
  シンボル:   メソッド clear()
  場所: クラス String
studya\a21\A21_exec.java:62: エラー: シンボルを見つけられません
                        strAarray.items[addNumber].clear();
                                        ^
  シンボル:   変数 addNumber
  場所: クラス A21_exec
studya\a21\A21_exec.java:62: エラー: シンボルを見つけられません
                        strAarray.items[addNumber].clear();
                                                  ^
  シンボル:   メソッド clear()
  場所: クラス String
エラー3個


コード内容


package studya.a21;

class A21_StrArray {
    // 文字列を保持する
    public String[] items = new String[100];
    public int addNumber = 0;


    // 最下行に要素を追加
    public void add(String data){
        items[addNumber] = data;
        System.out.println(addNumber + items[addNumber]);
        addNumber++;
    }

    // 指定インデックスの要素を上書き(指定インデックスが無い場合エラー)
    public void set(int index, String data){
    
        try {
        
            addNumber = index;
            items[addNumber] = data;
            System.out.println(addNumber + items[addNumber]);
        }
        catch(java.lang.NullPointerException e) {
            System.out.println("指定のインデックスがありません");
        }
    
    }

// 指定インデックスの要素を取得(指定インデックスが無い場合エラー);
    public String get(int index){
        System.out.println(addNumber + items[addNumber]);
        return items[addNumber];
    }


// 全ての要素をクリア
    public void clear(){
        items[addNumber].clear();
        System.out.println(items[addNumber]);
        
    }
}    

    class A21_exec {
        
        public static void main(String[] args) {
            
            A21_StrArray strAarray = new A21_StrArray();
            
            strAarray.add("aaa");
            strAarray.add("bbb");
            strAarray.add("ccc");
            strAarray.add("dd");
            strAarray.set(0,"a001");
            
            for(int i = 0; i < 4 ; i++){
                System.out.println(strAarray.items[i]);
            }
            
            strAarray.items[addNumber].clear();
        
        }
            
    }

1

回答

35586

閲覧

1件の回答

評価

0

>items[addNumber].clear();
>strAarray.items[addNumber].clear();
メソッドとは、オブジェクトが持っている値を操作するもので、オブジェクト自体を変えるものではない。
ここで「削除」と言っているのは、具体的に何がどうなった状態を指すのか。

また、メソッドは予めそのオブジェクトのクラスが持っているもので、「こういう意味のことをして欲しい」と思って書けば通るものではない。

>strAarray.items[addNumber].clear();
これはまた別の話で、addNumberはどのクラスが持っている変数か、ということ。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。