2016-10-23 12 views
-3

すべての偶数は印刷されますが、奇数13と11は印刷されません。3または5ではありません。前もって感謝します。このコードでは偶数と奇数を区別したい

パブリッククラスReadjustingArray { パブリック静的無効メイン(文字列[] args){

int[]A={13,3,4,6,8,5,10,11}; 
    int temp=0; 

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

     if (A[i] % 2 ==0){ 
      temp=A[i]; 
      A[i-1] = A[i]; 
      temp=A[i]; 
      System.out.print(A[i] + " "); 
     } 

    } 
    for (int j=0; j< A.length; j++){ 
     if (A[j] % 2 !=0){ 
      System.out.print(A[j] + " "); 
     } 
    }  
} 

}

+1

最初のループが完了すると、Aは[13,4,6,8,8,10,10,11]のようになります。あなたは最初のループで何を達成しようとしていますか? –

+0

また、インデックスエラーが発生する可能性があります。配列Aの最初の要素が偶数に変更された場合、最初の条件はtrueになり、A [i-1]は範囲外になります。 –

答えて

0

アレイを変更する必要はありません。オベンスを印刷するのと同じ方法でオッズを印刷してください。対応する比較ロジックを使用します。

2

最初のループの配列を変更しないで、次に2番目のループとして動作しますあなたは期待しています。また、Javaの8+に、あなたは、これはあなたを助けることができる

int[] A = { 13, 3, 4, 6, 8, 5, 10, 11 }; 
IntStream.of(A).filter(x -> x % 2 == 0) 
     .forEachOrdered(x -> System.out.printf("%d ", x)); 
IntStream.of(A).filter(x -> x % 2 != 0) 
     .forEachOrdered(x -> System.out.printf("%d ", x)); 
System.out.println(); // <-- Adds a new line (and an implicit flush) 
2

ようIntStreamfilterを使用する場合があります。

public static void main(String[] args) { 
int[] A = { 13, 3, 4, 6, 8, 5, 10, 11 }; 

for (int i : A) { 
     if (isEven(i)) { 
      System.out.println(i + " is even"); 
     } else { 
      System.out.println(i + " is odd"); 
     } 
    } 
} 

static boolean isEven(int number) { 
    if ((number % 2) == 0) { 
     return true; 
    } 
    return false; 
} 
+2

なぜ1ライナー用の関数を作成しますか? 'return(number%2)== 0;' – JohnnyAW

+0

コードの読み込みと理解のために、メソッドisEvenをサンプルメソッドisPrimeに置き換えることができます – david

関連する問題