7

これが私のコードです。範囲を取得できるようにするには、配列の最小値、最大値を取得する必要があります。数値を入力するたびに最小値が 0 になります。助けてください。ありがとうございました:)

final AutoCompleteTextView inputValues = (AutoCompleteTextView) findViewById(R.id.txt_input);
final TextView txtMinimum = (TextView) findViewById(R.id.txtMinimum);
final TextView txtMaximum = (TextView) findViewById(R.id.txtMaximum);
final TextView txtRange = (TextView) findViewById(R.id.txtRange);

Button btncalculate = (Button)findViewById(R.id.btncalculate);
btncalculate.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View arg0) {
        String []values = ( inputValues.getText().toString().split(","));
        int[] convertedValues = new int[values.length];

        // calculate for the minimum and maximum number
        int min = 0;
        int max=0;

        min = max = convertedValues[0];
        for (int i = 0; i < convertedValues.length; ++i) {
            convertedValues[i] =Integer.parseInt(values[i]);
            min = Math.min(min, convertedValues[i]);
            max = Math.max(max, convertedValues[i]);
        }
        txtMinimum.setText(Integer.toString(min));
        txtMaximum.setText(Integer.toString(max));

        // calculate for the range
        int range=max - min;
        txtRange.setText(Integer.toString(range));

    }});
4

10 に答える 10

28

コードで使用するCollectionsと、最小値と最大値を見つけることができます。

以下はそのサンプルコードです。

 List<Integer> list = Arrays.asList(100,2,3,4,5,6,7,67,2,32);

   int min = Collections.min(list);
   int max = Collections.max(list);

   System.out.println(min);
   System.out.println(max);

出力:

2
100
于 2013-09-16T12:35:18.337 に答える
6
int minIndex = list.indexOf(Collections.min(list));

また

public class MinMaxValue {

    public static void main(String[] args) {
        char[] a = {'3', '5', '1', '4', '2'};

        List b = Arrays.asList(ArrayUtils.toObject(a));

        System.out.println(Collections.min(b));
        System.out.println(Collections.max(b));
   }
}
于 2013-09-16T12:32:23.463 に答える
5

配列をソートして位置を取得でき0ますlength-1

Arrays.sort(convertedValues);

int min = convertedValues[0];
int max = convertedValues[convertedValues.length - 1];

Arrays#sort(int[]) :

指定された int の配列を昇順で並べ替えます。

したがって、ソート後、最初の要素が最小で、最後の要素が最大です。

于 2013-09-16T12:32:57.857 に答える
3
1. Sort the array.
2. Minimum is the First element.
3. Maximum is the last element of the array.

参考までに; ソート済み配列の計算上の利点。

于 2013-09-16T12:33:48.160 に答える
0
public static int[] getMinMax(int[] array) {

    int min = Integer.MAX_VALUE; //or -1
    int max = Integer.MIN_VALUE; //or -1
    for(int i : array) { //if you need to know the index, use int (i=0;i<array.length;i++) instead
        if(i < min) min = i; //or if(min == -1 || array[i] < array[min]) min = i; 
        if(i > max) max = i; //or if(max == -1 || array[i] > array[max]) max = i;
    }
    return new int[] {min, max};
}

並べ替えには少なくとも O(n log(n)) が必要です。n は配列内の要素の量です。配列内のすべての要素を単純に見ると、最小要素と最大要素を見つけるのは O(n) になります。大きな配列の場合、これははるかに高速です。

于 2013-09-16T13:06:26.207 に答える
0

コードで次の部分を削除します。

(min = max = convertedValues[0];)

min1に初期化します。

(int min = 1) 
于 2015-02-18T03:36:03.087 に答える