-1

配列サイズ40から、最大、最小、偶数の整数、奇数の整数の数、素数の数を出力する簡単なプログラムを作成しようとしています。

私は次のコードを書きます:

package TESTING;
import java.util.*;

public class testClass{  
    public static void main (String args[]){

    int numbers[]= {1,5,-9,12,-3,89,18,23,4,-6,14,-5,87,17,47,-73,39,49,56,71,
                    3,0,-2,23,-8,45,63,71,5,29,-4,15,78,37,99,-66,44,94,65,73};  
    //Find minimum (lowest) value in array using loop  
    System.out.println("Minimum Value = " + getMinValue(numbers));  
    //Find maximum (largest) value in array using loop  
    System.out.println("Maximum Value = " + getMaxValue(numbers));  
    System.out.println("Even Numbers = " + even(numbers));
    System.out.println("Odd Numbers = " + odd(numbers));
    for(int number = 1; number<=numbers.length; number++){
    //print prime numbers only
    if(isPrime(numbers)){

       System.out.println("+ numbers");
    }
  }


//Find maximum (largest) value in array using loop  
public static int getMaxValue(int[] numbers){  
int maxValue = numbers[0];  
for(int i=1;i<numbers.length;i++){  
    if(numbers[i] > maxValue){  
        maxValue = numbers[i];  
    }  
}  
return maxValue;  
}  

 //Find minimum (lowest) value in array using loop  
 public static int getMinValue(int[] numbers){  
int minValue = numbers[0];  
for(int i=1;i<numbers.length;i++){  
    if(numbers[i] < minValue){  
        minValue = numbers[i];  
    }  
}  
return minValue;  
}  
//Find even numbers in array 
public static int even(int[] numbers)
{
int countLength = 0;

for (int i = 0; i < numbers.length; i++) {
    if (numbers[i] % 2 == 0) {
        countLength++; 
    }
}

return countLength; 
}

public static int odd(int[] numbers)
{
int countOdd =0;
for (int i=0; i<numbers.length; i++) {
    if (numbers[i] %2 != 0){
        countOdd++;
    }
}
return countOdd;

}

public static boolean isPrime(int numbers[]){
     for(int i=2; i<numbers.length; i++){
   if(numbers.length%i == 0){
       return false; //number is divisible so its not prime
        }
     }
     return true; //number is prime now
 }    


}

問題はどこにあるのかわかりませんでしたか?出力に素数が表示されていません。次の出力が得られます。

出力

Minimum Value = -73
Maximum Value = 99
Even Numbers = 14
Odd Numbers = 26
4

4 に答える 4

0

これが問題だと思います。コードの変更を適切に観察します:-

for (int number = 0; number < numbers.length; number++) {
            // print prime numbers only
            if (isPrime(numbers[number])) {
                System.out.println("Prime= "+numbers[number]);
            }
        }

isPrime(number)使用する必要があり、使用しないnumbers[]でくださいisPrime()

public static boolean isPrime(int number) {
        for (int i = 2; i < number; i++) {
            if (number % i == 0) {
                return false; // number is divisible so its not prime
            }
        }
        return true; // number is prime now
    }

これらのコードを変更します。それは動作します。

于 2013-02-22T07:44:17.670 に答える
0

あなたは素数を印刷しようとしています..はい?次に、以下で編集したように二重引用符を削除します。

これを試してください:素数を出力しようとするときのforループの内側。

if(isPrime(numbers[i])){

   System.out.println(numbers[i]);
}

それ以外の

if(isPrime(numbers)){

   System.out.println("+ numbers");
}

そして、isPrime関数も編集します。

public static boolean isPrime(int numbers){
    for(int i=2; i<numbers; i++){
        if(numbers%i == 0){
            return false; //number is divisible so its not prime
        }
    }
     return true; //number is prime now
}    
于 2013-02-22T07:44:36.643 に答える
0

あなたは簡単にListデータからJavaを作成することができますArrays.asList()

リストを並べ替えます。これで、最初と最後の要素が最小値と最大値になります。

CollectionUtils.countMatches()を使用し、述語を記述して、数値がisPrime、isEven、isOdd...であるかどうかをテストします。

幸運を!

于 2013-02-22T07:45:36.420 に答える
0

isPrimeのより良いバリアントは次のとおりです。

public static int[] getPrime(int[] someNumbers) {
  int[] temp = new int[someNumbers.length];
  int cnt = 0;
  for (int num : someNumbers) {
    int max = num / 2;
    for (int i = 2; i <= max; i++) {
      if (num % i == 0) {
        temp[cnt++] = num;
      }
    }
  }
  int[] result = new int[cnt];
  System.arrayCopy(temp, 0, result, 0, cnt);
  return result;
}

注:印刷するには、メソッドの結果を繰り返し処理し、各数値を印刷する必要があります

public static void printArray(int[] anArray) {
  boolean firstRun = true;
  for (int num : anArray) {
    if (! firstRun) {
      System.out.print(", ");
    } else {
      firstRun = false;
    }     
    System.out.print("" + num);
  }
  System.out.println();
}
于 2013-02-22T07:53:36.593 に答える