2017-04-20 9 views
-2

私は基本的なJavaプログラミングのオンラインコースをやっています。私の先生は私に割り当てを割り当ててユーザーに画面に表示される乱数その配列はコピーされなければならず、その配列は、スクリーン上に印刷されなければならない別の配列の偶数/奇数によって順序付けされなければならない。配列を奇数または偶数の順に並べ替えます

たとえば、 ユーザーは画面に表示する数字を10個選択します。 以下の10個の数字を言うことができます。 そして、次の行には 586 36 980 902 982 998言うべき - 6は あったところ何が偶数/ムラ番号357 843 93 909 そして、最後の行にします偶数と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やその他の方法を使用できません。

私はコード化がまだ完了していませんが、誰かが2番目の配列の要素を正しい順序で3番目の配列に配置するのを手伝ってくれたらと思います。

+0

順序は、(多くの異なるソートアルゴリズム、おそらく選択ソート[選択ソートのstackoverflow]があるソートアルゴリズムを必要としますhttp://stackoverflow.com/questions/8362640/java-selection-sort-algorithm) –

+0

@Luminous_Devステートメントによれば、アイデアはちょうど最初に偶数を入れて、最後には奇妙な...彼は同じ注文を出しました。 – 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

関連する問題