

クラス変数で定義した変数に、メイン以外のいくつかのメソッドからアクセスしたいです。  
ただ、その変数は、標準入力によって配列の数が変わるので、定義するときに入力もしないといけないかと思います。  
どうすればいいでしょうか。


CC BY-SA 4.0
2023-09-20T05:44:27.370
96276
2023-09-20T17:21:56.940
59848
question
java class
クラス変数（int型の配列）に標準入力から受け取った数字を入れたいのですが、標準入力の値によって、配列の数が変わります。どうすればいいでしょうか。


> 定義するときに入力もしないといけないかと思います。

この点が勘違いで、変数の定義とその変数が指す配列の生成は同時である必要はありません。  
入力操作が完了した時点で配列を生成すれば良いでしょう。

例えば次のようなコードになります:

[code]

    import java.util.Arrays;
    import java.util.Scanner;
    import java.util.Spliterators;
    import java.util.stream.StreamSupport;
    
    import static java.util.Spliterator.ORDERED;
    
    public class App {
    
        private static int[] inputData;
    
        public void execute() {
            var scanner = new Scanner(System.in);
            var spliterator = Spliterators.spliteratorUnknownSize(scanner, ORDERED);
            var stream = StreamSupport.stream(spliterator, false);
            // 入力が終わったら(=終端操作として)配列オブジェクトを生成
            inputData = stream.mapToInt(Integer::valueOf).toArray();
        }
    
        public static void main(String[] args) {
    
            System.out.println(Arrays.toString(inputData)); // 初期値は null
    
            new App().execute(); // 入力操作
    
            System.out.println(Arrays.toString(inputData)); // 入力値
        }
    }
    
[/code]

(質問に即した形で回答しましたが、一般的にはこのような用途でクラス変数を用いることはしません)


CC BY-SA 4.0
2023-09-20T17:12:49.573
96283
2023-09-20T17:21:56.940
2023-09-20T17:21:56.940
2808
2808
96276
answer