2017-04-20 101 views
-2

我正在做一個基本的java編程的在線課程,而且我的老師給了我一個任務,讓用戶選擇一些隨機數字,這些數字會出現在屏幕上到一個數組中,那麼該數組必須被複制,然後該數組必須被另一個數組中的偶數/奇數排序,然後必須將其打印在屏幕上。按奇數或偶數排列數組

例如 用戶將選擇10個數字出現在屏幕上。 可以說下面的10個數字。 然後在下面的行應該說 586 36 980 902 982 998 - 357 843 93 909 並在最後一行有多少偶數/不均勻數字那裏 有6偶數和4個不均勻的數字。

但我不知道如何將數組元素到我的代碼中的正確位置。

import java.util.Arrays; import java.util.Scanner;

public class Assignment 4 
{ 

    public static void main(String[] args) 
    { 
     final int LENGTH = 1000; 
     int[] values = new int[LENGTH]; 
     int currentSize = 0; 
     int quantity = 0; 
     double randomnumber = 0; 
     int odd = 0; 
     int even = 0; 


     System.out.print("How many random numbers between 0 - 999 do you want?"); 
     Scanner scan = new Scanner(System.in); 
     quantity = scan.nextInt(); 
     while (quantity > currentSize && currentSize < values.length) 
     { 
      randomnumber = (Math.random() * 1000); 
      int rounded = (int) Math.round(randomnumber); 
      values[currentSize] = rounded; 
      currentSize++; 
     } 

     System.out.print("\nHere are the randomnumbers: "); 
     for (int i = 0; i < currentSize; i++) 
     { 
      System.out.print(values[i]); 
      System.out.print(" "); 
     } 
     int[] values2 = Arrays.copyOf(values,values.length); 
     int[] values3 = new int [quantity]; 
     System.out.print("\nHere are the randomnumbers in order: "); 
     for(int i = 0; i < currentSize; i++) 
     { 

      if(values2[i] %2 == 0) 
      { 
       values3[i] = values2[i];  
      } 

      if(values2[i] %2 == 0) 
      { 
       even++; 
      } 
      else 
      { 
       odd++; 
      } 
     } 


     for (int i = 0; i < currentSize; i++) 
     { 
      System.out.print(values3[i]); 
      System.out.print(" "); 
     } 
     System.out.print("\nIt was " + even); 
     System.out.print(" even numbers, and "); 
     System.out.print(odd); 
     System.out.print(" odd numbers"); 
    } 
} 

而且我不能使用Arraylist或任何其他方法。

而我現在編碼還沒有完成,但如果有人可以幫我把第二個數組中的元素放在第三個數組中的正確順序。

+0

排序需要排序的算法有很多種不同的排序算法,或許選擇排序[選擇排序計算器( http://stackoverflow.com/questions/8362640/java-selection-sort-algorithm) –

+0

@Luminous_Dev根據聲明,這個想法只是先把偶數和最後的奇數...在t他生成的順序相同。 – Dazak

回答

1

在這裏你去:

int[] values = new int[]{586,357, 36, 843, 93, 980, 902, 982, 909, 998}; 
int[] odds = new int[values.length]; 
int[] evens = new int[values.length]; 
int oddCount = 0, evenCount = 0; 
for(int number : values){ 
    if(number % 2 != 0){ 
     odds[oddCount++] = number; 
    }else{ 
     evens[evenCount++] = number; 
    } 
} 

System.out.println("Odd numbers : " + oddCount); 
for(int i = 0 ; i < oddCount ; i++){ 
    System.out.print(odds[i] + " "); 
} 

System.out.println("Even numbers : " + evenCount); 
for(int i = 0 ; i < evenCount ; i++){ 
    System.out.print(evens[i] + " "); 
} 
0

在這裏你必須稍稍修改代碼另一個近似:

int[] values2 = Arrays.copyOf(values, values.length); 
int[] values3 = new int[quantity]; 
int temp = 0; 
System.out.print("\nHere are the random numbers in order: "); 
for (int value = 0; value<2 ; value++){ 
    for(int i = 0; i < currentSize; i++) 
    { 
     if(values2[i] %2 == 0) 
     { 
      if(value==0){ 
       values3[temp] = values2[i]; 
       temp++; 
       even++; 
      } 
     }else{ 
      if(value==1){ 
       values3[temp] = values2[i]; 
       temp++; 
       odd++; 
      } 
     } 
    } 
} 

for (int i = 0; i < even; i++) //iterate over the first part of the array with even numbers 
{ 
    System.out.print(values3[i]); 
    System.out.print(" "); 
} 
System.out.print("- "); //Add the separator at the end of all the even numbers 
for (int i = even; i < currentSize; i++) //iterate over the last part of the array with odd numbers 
{ 
    System.out.print(values3[i]); 
    System.out.print(" "); 
} 
System.out.print("\nIt was " + even); 
System.out.print(" even numbers, and "); 
System.out.print(odd); 
System.out.print(" odd numbers"); 

我建議你使用System.out.format擁有更緊湊的代碼,因此,對於例如在代碼的最後部分,而不是:

System.out.print("\nIt was " + even); 
System.out.print(" even numbers, and "); 
System.out.print(odd); 
System.out.print(" odd numbers"); 

你可以這樣做:

System.out.format("\nIt was %d even numbers and %d odd numbers", even, odd); 

或者乾脆:

System.out.print("\nIt was " + even + " even numbers and " + odd + " odd numbers"); 

甚至:

System.out.printf("\nIt was %d even numbers and %d odd numbers", even, odd); 
+0

謝謝,那實際上就是我被卡住了,現在我只需要弄清楚如何在最後一個偶數之後得到分隔符。 –

+0

檢查更新...在這種情況下,僅針對偶數迭代數組...添加分隔符,然後僅針對奇數對數組進行迭代 – Dazak