2015-10-07 58 views
-2

我需要編寫一個Java程序,它將整數和偶數偶數分開。編寫一個在整數數組中分隔偶數和奇數的Java程序

這是我到目前爲止有: 這一部分是完美的:

package Homework; 
import java.util.*; 
public class EvenOdd 
{ 
public static void main(String[] args) 
{ 
    // TODO Auto-generated method stub 
    System.out.println("Please enter 10 integers"); 
    int [] a= new int[10]; 
    Scanner sc = new Scanner(System.in); 
    for(int i=0;i<a.length;i++) 
    { 
     System.out.print("The "+(i+1)+" integer = "); 
     a[i]= sc.nextInt(); 
    }  

     System.out.println("\nThe resulting array"); 
     for(int i=0;i<a.length;i++) 
     { 
      for(int j=1;j<a.length;j++) 
      { 
       int temp; 
       if(a[i]%2!=0 && a[j]%2==0 && j>i) 
       { 
        temp=a[j]; 
        a[j]=a[i]; 
        a[j]=temp; 
        break;  //There seems to be some problem in this loop 
       } 
      } 
      System.out.println("The "+(i+1)+" integer = "+a[i]); 
     } 
+0

你是否也想對數組中的元素進行排序? – CodeRunner

回答

1

如果使用%2這是模,你應該能夠找到,如果數字是偶數或奇數爲偶數模2將等於0和奇數模2將等於1。

嘗試此用於排序的數組:

for(int i=0;i<count;i++) 
    { 
     if(a[i] %2 != 0){//even 
      int temp = a[i]; 
      a[i--] = a[count--]; 
      a[count+1] = temp; 
     } 
    } 
+0

我已經使用了%2,但我需要在底部獲得偶數和底部的奇數 –

+0

您已經掃描了變量,現在您需要對其進行「排序」或組織它們。 – Chris

+0

確切的,但我不知道如何做到這一點 –

1

引入兩個整數類型的ArrayLists升ist1和list2。將偶數編號放入list1和奇數編號到list2中。合併到列表1中。

public class EvenOdd { 

    public static void main(String[] args) { 

     System.out.println("Please enter 10 integers"); 
     int[] a = new int[10]; 
     ArrayList<Integer> list1 = new ArrayList(); 
     ArrayList<Integer> list2 = new ArrayList(); 
     Scanner sc = new Scanner(System.in); 
     for (int i = 0; i < a.length; i++) { 
      System.out.print("The " + (i + 1) + " integer = "); 
      a[i] = sc.nextInt(); 
      if (a[i] % 2 == 0) { 
       list1.add(a[i]); 
      } else { 
       list2.add(a[i]); 
      } 
     } 
     list1.addAll(list2); 
     for (int b : list1) { 
      System.out.print(b + " "); 
     } 

    } 
} 
0

我相信你的元素交換工作不因錯字:

for(int i=0;i<a.length-1;i++) 
{ 
    for(int j=i+1;j<a.length;j++) 
    { 
      int temp; 
      if(a[i]%2!=0 && a[j]%2==0) //no need of the last condition 

temp=a[j]; 
a[j]=a[i]; 
a[i]=temp; //Should be a[i] and not a[j] 
break; 

你也可以通過在for循環做以下修改時減少迭代次數

相關問題