3

配列内の最小値を見つける必要がありますが、複数の結果を処理する方法を知りたいです。私の配列に含まれて[1,4,7,5,3,1]いるとしましょう - 私の結果は1,1. 何か案は?

double minimum = array1[0]; //sets the first to be the smallest
for (int i = 0; i < array1.length; i++) //goes through your array
{
 if (array1[i] < array1[0]) //checks and replaces if necessary
 {
    minimum = array[i];   

 }
}

System.out.println( minimum ); //returns the value of the smallest
4

7 に答える 7

1
Arrays.sort(array1);
ArrayList<Integer> smallestValues = new ArrayList<Integer>();
smallestValues.add(array1[0]);
int i=1;
while (i<array1.length && (array1[i] == array1[i-1])) {
     smallestValues.add(array1[i]);
    i++;
 }
于 2013-09-17T06:14:51.480 に答える
1

コードに小さな間違いがある場合は、現在の値を最初の値ではなく最小値と比較する必要があります

double minimum = array1[0]; //sets the first to be the smallest
var minValueCounter = 0;
for (int i = 0; i < array1.length; i++) //goes through your array
{
 if (array1[i] < minimum) //checks and replaces if necessary
 {
    minimum = array[i];  
    minValueCounter  = 1; 

 }
 else if (array1[i] == minimum) //checks and replaces if necessary
 {
    minValueCounter++;

 }
}
于 2013-09-17T06:14:54.483 に答える
1

1つのことは、配列を昇順で「ソート」してから、値が最初から等しくなるまで表示することです

于 2013-09-17T06:12:31.883 に答える
0

私はこのようにします

    int[] a = { 1, 4, 7, 5, 3, 1 };
    Arrays.sort(a);
    int n = 1;
    for (int i = 1; i < a.length && a[i] == a[0]; i++)
        n++;
    int[] res = Arrays.copyOf(a, n);
于 2013-09-17T06:19:03.823 に答える
0

重複をカウントする別の変数を保持します。現在の最小値と等しい値が見つかった場合は、このカウントを増やします。最小値が変更されるたびにカウントをリセットすることを忘れないでください。

于 2013-09-17T06:09:39.370 に答える
0

使ってみてはどうですかCollections.sort()

私はあなたarray1[]doubleタイプであると仮定しています

double array1[] = new double[] { 1, 4, 7, 5, 3, 1 };
ArrayList<Double> al = new ArrayList<Double>();
for (int i = 0; i < array1.length; i++)
    al.add(array1[i]);
Collections.sort(al);
System.out.println(al.toString());

出力:

[1.0, 1.0, 3.0, 4.0, 5.0, 7.0]

すべての等しい最小値を出力するには、次を使用します

for (int i = 0; i < (al.size() - 1); i++) { // why (al.size() - 1), Its better if try to learn yourself
    if (Double.compare(al.get(i), al.get(i+1))==0)
       System.out.print(""+al.get(i) + "," + al.get(i + 1));
    else
       break;
}

出力:

1.0,1.0
于 2013-09-17T06:13:19.480 に答える