1

入力のリストを 1 つの配列に並べ替え、そこから偶数または奇数の 2 つの異なる配列を作成する方法を見つけようとしています。if ループの配列に整数を追加できないようです。

これが私のコードです:

 Scanner in = new Scanner (System.in);

System.out.print("Enter a number");
    int number = in.nextInt();


 int [] x = new int[0];
 int [] even = new int [0];
 int [] odd = new int [0];



for (int i = 0; i <x.length; i++)
{

    if (in.nextInt() == 0){
        for (i = 0; i <x.length; i++)
        {
            if (x[i] % 2 == 0)
            {
            even = even + x[i];
            System.out.print("Even numbers = " + even);
            i++;
            }
            if (x[i] % 2 != 0)
            {
            odd = odd + x[i];
            System.out.print("Odd numbers = " + odd);
            i++;
            }
        }
        break;
                }

    else {
        x[i] = number;
        i++;
        }

}
4

4 に答える 4

2

Java では、配列は固定サイズです。それらは動的に成長しません。ArrayList拡張および縮小できる配列のようなコンテナーが必要な場合は、を使用します。

List<Integer> even = new ArrayList<Integer>();
List<Integer> odd  = new ArrayList<Integer>();

if (...)
{
    even.add(number);
}
else
{
    odd.add(number);
}
于 2013-03-27T21:46:07.833 に答える
2

配列を正しく使用していません。これは、それらの使い方を教えるために設計された宿題だと思います。このチュートリアルを試してください:

http://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html

幸運を!

于 2013-03-27T21:47:28.607 に答える
0

これを行うために 3 つの配列を使用することはありません。リストを単純にトラバースし、偶数インデックスと奇数インデックスを参照する 2 つのループ変数を設定します。次のようになります。

int evenIndex=0,oddIndex=1;
int evenSum=0,OddSum=0;
int [] x=new int[10];

 while(evenIndex <= x.length && oddIndex <= x.length)
        {
          evenSum+=x[evenIndex];
           oddSum+=x[oddIndex];


             evenIndex+=2;
             oddIndex+=2 

            }
于 2013-03-27T21:52:57.653 に答える
0

2 つの適切な解決策:

int [] x = new int[0];
LinkedList<Integer> even = new LinkedList<Integer>(),
                     odd = new LinkedList<Integer>();

for(int num: x)
    if (x & 1 == 1)
        odd.add(num);
    else
        even.add(num);

もう 1 つのオプションは、偶数と奇数の数を数え、正しいサイズの配列を割り当ててから、配列に数値を入れて反復処理することです。これも O(n) ソリューションです。

于 2013-03-27T21:53:44.480 に答える