2017-06-12 13 views
1

私は50-100の間に8つのランダムな数字の配列を作るためのコードを持っていますが、私の偶数とオッズカウンターの働きを得る方法と8つの数字の配列を追加する方法合計。誰かが私を助けることができますか?配列のフォーマットを宣言する

問題:

8つの整数を格納する配列を宣言します。 forループを使用して、すべてこの配列に50から100の範囲の8つのランダムな整数を追加します。重複は大丈夫です。次に、配列をソートするメソッドに配列を渡し、元の配列の最大要素と最小要素のみを含む別の配列を返します。これらの2つの値をmainに出力します。次に、foreachループを使用して、ソートされた配列のすべての要素を1行で1つのスペースで区切って表示します。この後者のループでは、配列内の奇数と偶数を数え、配列内のすべての要素の合計を求める必要があります。これまで

マイコード:

import java.util.Arrays; 
import java.util.Random; 

public class Assignment1 { 
    private static Random rand = new Random(); 
    public static void main(String[] args){ 

     int[] randomEight = numbers(); 
     int[] smallestLargest = sortArrayAndReturnSmallestLargest(randomEight); 
     System.out.println("Here is the Lowest number "); 
     System.out.println((smallestLargest[0])); 
     System.out.println("Here is the Largest number "); 
     System.out.println((smallestLargest[1])); 
     System.out.println("Here is the array"); 
     System.out.println(Arrays.toString(randomEight)); 


     System.out.println(); 
    } 
    public static int[] numbers(){ 
     int evenCount = 0; 
     int oddCount = 0; 
     int[] randomEight = new int[8]; 
     for (int x = 0; x < 8; x++){ 
      randomEight [x] = rand.nextInt((100 - 50) + 1) + 50; 
     for(int item: randomEight){ 
      if(item % 2 == 0){ 
       evenCount++; 
      } else { 
       oddCount++; 
      } 
     } 
     } 
     System.out.println("Here is the Evens: "); 
     System.out.println(evenCount); 
     System.out.println("Here is the Odds"); 
     System.out.println(oddCount); 
     return randomEight; 


    } 

    public static int[] sortArrayAndReturnSmallestLargest(int[] randomEight){ 
     int[] smallestLargest = new int[2]; 
     Arrays.sort(randomEight); 
     smallestLargest[0] = randomEight[0]; 
     smallestLargest[1] = randomEight[7]; 
     return smallestLargest; 
    } 


} 

マイ出力:

Here is the Evens: 
53 
Here is the Odds 
11 
Here is the Lowest number 
53 
Here is the Largest number 
96 
Here is the array 
[53, 54, 57, 58, 62, 75, 80, 96] 

サンプル出力:

The lowest element is 59 
The highest element is 96 
Here is the array 
59 64 76 77 80 88 91 96 
Evens: 5, odds: 3 
Total: 631 
+2

あなたの正確な問題は何ですか?あなたはメソッドに引数を渡す方法を知らない?あなたはメソッドへの引数として配列を渡す方法を知らないのですか?あなたはパラメータでメソッドを宣言する方法を知らない?あなたはソートする方法を知らない? –

+0

何らかのソート機能を実装するだけで済みます。どのようにしたいかはあなた次第ですが、私は個人的には[バブルソート](https://en.wikipedia.org/wiki/Bubble_sort) – SpencerD

+0

のようにあなたのプロジェクトに既にjava.util.Arraysをインポートしています。これにはソート方法が含まれています。 – neal

答えて

0

あなたが行うことができます:

private int[] sortArrayAndReturnSmallestLargest(int[] randomArray){ 
    int[] smallestLargest = new int[2]; 
    Arrays.sort(randomArray); 
    smallestLargest[0] = randomArray[0]; 
    smallestLargets[1] = randomArray[randomArray.size()-1]; 
    return smallestLargest 
} 

はmainメソッドから上記を使用するには3210

int[] smallestLargest = sortArrayAndReturnSmallestLargest(randomEight) 

私はあなたの宿題をすべて完了したくありません。私の意図は、まだあなたにとって快適ではないことをする方法を示すことです。指示に従って、以下のループを使用して、必要な作業の大部分を数え、合計して印刷することができます。

evensとoddsのカウントを取得するには、カウンタを作成し、int値が偶数か奇数かによってrandomArrayをループし、それぞれのカウントをインクリメントします。あなたは次のようなことをすることができます:

int evenCount = 0; 
int oddCount = 0; 

for(int item: randomEight){ 
    //Use modulo to determine even vs odd 
    if(item % 2 == 0){ 
     evenCount++; 
    } else { 
     oddCount++; 
    } 
} 

完全なコードです。私はこれがテキストファイルだと書いたので、私は何も約束していない。あなたが見ることができるように、私は割り当てを受けて、それぞれの文をコメントに分解して、これらのことをどのように見る必要があるかを見ることができます。

import java.util.Arrays; 
import java.util.Random; 

public class Assignment1 { 

public static void main(String[] args){ 

private static Random rand = new Random(); 
int evenCount = 0; 
int oddCount = 0; 
int sum = 0; 

//Declare an array to hold eight integers. 
int[] arrayWithEightInts = new int[8]; 

//Use a for loop to add eight random integers, all in the range from 50 to 100, inclusive, to this array. Duplicates are okay. 

for (int x = 0; x < 8; x++){ 
     arrayWithEightInts [x] = rand.nextInt((100 - 50) + 1) + 50; 
} 

//Next, pass the array to a method that sorts the array and returns another array containing only the largest and smallest elements in the original array. 
int[] smallestLargest = sortArrayAndReturnSmallestLargest(arrayWithEightInts); 

//Print these two values in main. 
System.out.println(“The lowest element is ” + smallestLargest[0]; 
System.out.println(“The highest element is ” + smallestLargest[1]; 

//Then use a foreach loop to display all elements of the sorted array on one line separated by a single space. This latter loop should also count the odd and even numbers in the array and determine the sum of all elements in the array. 
System.out.println(“Here is the array”); 
for(int item: arrayWithEightInts){ 
    sum = sum + item; 
    System.out.print(item + “ ”); 
    if(x % 2 == 0){ 
       evenCount++; 
    } else { 
       oddCount++; 
    } 
} 
System.out.println(); 
System.out.println(“Evens: ” + evenCount + “, odds: “ + oddCount); 
System.out.println(“Total: ” + sum); 
} 


public static int[] sortArrayAndReturnSmallestLargest(int[] randomEight){ 
    int[] smallestLargest = new int[2]; 
    Arrays.sort(randomEight); 
    smallestLargest[0] = randomEight[0]; 
    smallestLargest[1] = randomEight[randomEight.size()-1]; 
    return smallestLargest; 
} 
} 
+0

8桁のランダムな数字の配列を最初の配列とそれをメインに印刷するにはどうすればいいですか – michael

+0

先生の目標は、Javaでは、ほとんどの場合、オブジェクトが参照渡しであることを理解させることです。だから、randomArrayが他のメソッドでソートされている場合、mainメソッドに渡す必要はありません。ソートされた配列を指すようになりました。私は、あなたの教授がArrays.sortを使うのではなく、自分でソートアルゴリズムを作成/使用/コピーすることを好むだろうと想像しています.... – neal

+0

私のクラスで私は自分の先生であり、ここに。 – michael

0

私は配列を渡すと、ソートする方法を見つけ出すことはできませんそれはすべてのために 異なる方法で尋ねる

これらの質問に対する答えを得るために配列をソートする必要はありません。カスタムメイドのメソッドを使用してください。

*最低要素:*は..

*最高素子をアレイ状にループを実行し、最小値を設定する変数を使用する:*の方法と同様

*ここで配列は次のとおりです。*私はあなたがその

*均等とオッズで行わていると思う:!*ループ配列とチェックのx%2 == 0またはX%2 = 0 *ループ配列および蓄積する変数を使用します:

*合計(ヒントは、あなたが+オッズ=がをarrays.size 追いついを覚えている....これらのメソッドのいずれか一方のみを行う必要があります)問題の第2の部分を行うために、結果

0

ミシェル、そのあなたが同じ質問を毎回更新するよう変更を追跡するのは難しいです。単純に実行する前に、ステップを取り戻してコードを実行してください。ここの問題は、あなたのforループにあります。

Line1:for (int x = 0; x < 8; x++){ 
       Line2: randomEight [x] = rand.nextInt((100 - 50) + 1) + 50; 
       Line3: for(int item: randomEight){ 
       Line4:  if(item % 2 == 0){ 
       Line5:  evenCount++; 
       Line6: } else { 
       Line7:  oddCount++; 
       Line8: } 
       Line9: } 
       Line10: } 

上記のコードは、このようになります。回線2には0

  • としてアレイに乱数を使用して、配列全体をチェックするための上に再び反復した別のループを開始LINE3で79
  • を想定ASSING xを

    • 外側ループは、ライン1で開始し、初期化

    あなたのループはn * n回実行されますが、そのことは想定されていません。配列に挿入されている番号を確認するだけです。

    コードを以下のように変更してください。これがうまくいきたいです

    for (int x = 0; x < 8; x++){ 
          randomEight [x] = rand.nextInt((100 - 50) + 1) + 50; 
          if(isPrime(randomEight [x])){ 
           evenCount++; 
          }else{ 
           oddCount++; 
          } 
         } 
    private static boolean isPrime(int item){ 
         boolean flag = false; 
    
         if(item % 2 == 0){ 
          flag = true; 
         } else { 
          flag = false; 
         } 
    
         return flag; 
        }