0

Javaで次のようなことをする方法はありますか:

int foo[] = 新しい int[0..n];

すなわち

フー[0] = 0

フー[3] = 3

4

3 に答える 3

3

組み込みの言語機能を使用しない。もちろん、それを行うためのメソッドを簡単に作成できますが、何も組み込まれていません-そして、多くのサードパーティのユーティリティライブラリ(Guavaなど)にもないため、ほとんど役に立たないと思います.

于 2012-10-18T22:36:14.980 に答える
2

そうは思いませんが、単純な for ループを使用できます。

int foo[n];

for(int i = 0; i < n; i++) foo[i] = i;

メソッドが必要な場合は、次のようなものを試してください。

public void initialize(int[] array, int start, int end) {
    int array_length = array.length;
    if (end > array_length) end = array_length;

    for (int i = start; i < end; i++) {
        array[i - start] = i;
    }
}

// In any other point in your code
int foo[] = new int[6];
initialize(foo, 0, 10);

もう 1 つの方法は、Range クラスを作成してこの機能を追加することです。

import java.util.Arrays;
import java.util.Iterator;
import java.util.List;

public class Range implements Iterable<Integer> {
    Integer array[];

    public Range(int size) {
        this(0, size - 1);
    }

    public Range(int start, int end) {
        array = new Integer[end - start];

        for (int i = start; i < end; i++) {
            array[i - start] = i;
        }
    }

    public List<Integer> asList() {
        return Arrays.asList(array);
    }

    @Override
    public Iterator<Integer> iterator() {
        return Arrays.asList(array).iterator();
    }
}

使用例を次に示します。

Range range = new Range(4, 10);

for (int i : range) {
    System.out.println(i);
}

このコードは改善できると確信していますが、それだけの価値はありません。

于 2012-10-18T22:36:44.930 に答える
1
int n = 10;
int[] arr = new int[n+1];

forloops には柔軟な構文があるため、次のようにすることもできます。

for ( int i = 0; i < arr.length; arr[i] = i++ );

PS
上記よりも少ないコードが必要な場合は、これを行うことができます:

int i = 0;
for ( int c : arr ) { arr[i] = i++; }

PPS
これらのコードは簡潔ですが、私には不明瞭で、悪臭がします。

于 2012-10-18T22:41:24.253 に答える