

①以下のプログラムで、list型変数listnumberの要素に0が含まれている場合に、その0を除きたく、removeメソッドを使っていますが、以下のようなエラーが出ます。どのようにすればよろしいでしょうか？

[code]

    Main2.java:40: エラー: シンボルを見つけられません
                listnumber.remove(0);
                          ^
      シンボル:   メソッド remove(int)
      場所: タイプint[]の変
    
[/code]

②数字を入力して配列に入れて行きますが、もし同じ数字が複数配列に入った場合、後の数字を除きたいです。どうすればいいでしょうか？  
if(list number[i]==listnumber[i]){.....}と考えています。

[code]

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.nio.charset.StandardCharsets;
    import java.util.*;
    import java.util.List;
    
    public class Main2 {
        /**
         * Iterate through each line of input.
         */
    
        public static void main(String[] args) throws IOException {
            // InputStreamReader reader = new InputStreamReader(System.in, StandardCharsets.UTF_8);
            // BufferedReader in = new BufferedReader(reader);
    
            Scanner sc=new Scanner(System.in);
    
            int listnumber[]=new int[10];
    
            for(int i=0;i<10;i++){
                int number=sc.nextInt();
                listnumber[i]=number;
            }
    
            System.out.println("nyuryoku End");
    
            for(int i=0;i<10;i++){
                //listのバリューが0だったらそいつを除く。 
                if(listnumber[i]==0){
                    listnumber.remove(0);
                }
    
                System.out.println(listnumber[i]);
            }
        }
    }
    
[/code]

実行環境

openjdk version "1.8.0_242"  
OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_242-b08)  
OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.242-b08, mixed mode)


CC BY-SA 4.0
2020-09-19T06:15:39.797
70533
2020-09-19T07:25:39.627
2020-09-19T06:51:26.420
3060
39688
question
java
配列の要素を除くやり方がわかりません


（１）  
質問には、『list型変数listnumber』と書かれていますが、質問のプログラムでは

[code]

    int listnumber[]=new int[10];
    
[/code]

となっているので、listnumberは"整数の配列"です。ここで起きている矛盾(思い違い)が問題をややこしくしているのだと思います。

修正方法は２種類あります。  
[方法１]一旦配列にデータを入れて、それをlistに変換し、removeメソッドで特定の値を持つ要素を取り除いた後に、listを配列に変換する。

[方法２]ArrayList listnumber = new ArrayList();
というようにlist型のlistnumberを宣言し、最初のfor文で
listnumber.addで値を追加していく。その後にremoveメソッドで特定の値を持つ要素を取り除く。

＝＝＝  
（２）辞書(java.util.Dictionary)を利用します。  
配列に入れていく時に辞書にも追加します、そしで配列に入れる際に辞書に入っているかどうかをチェックして、既に入っている場合は配列に入れません。そうすれば、同じ数字が配列に複数入ることがありません。


CC BY-SA 4.0
2020-09-19T07:25:39.627
70534
2020-09-19T07:25:39.627
217
70533
answer