0

こんにちは私は30個の整数を読み取り、最小値と最大値を読み取るためにこの配列を書き込んでいます。私は最大値を解決しましたが、最小値は機能していません、すべての助けはありがたいです、述べたように私は最大値を解決しましたが、最小値は機能していません

import java.io.*;
import java.util.*;

public class Uppgift1
{
public static void main(String args[])throws IOException
{
BufferedReader stdin = new BufferedReader
        (new InputStreamReader (System.in));

        int antal = 0; 
        int summa = 0;
        double medel = 0;
        int min;
        int max = 0;
                System.out.print("Hur manga tal vill du mata in(max 30)? ");
                antal = Integer.parseInt(stdin.readLine());

        int [] array = new int[antal];

        for(int i = 0; i<antal; i++){
        array[i] = Integer.parseInt(stdin.readLine());
        summa = summa +array[i];
        medel = summa / antal; 


        }
                System.out.println("summan av talen är "+summa);
                System.out.println("medel av alla tal är "+medel);

        for (int i = 0; i < antal; i++) 
      {
        while(array[i]>max)
            { 
        max=array[i];
          }
            } 


            System.out.println("max numret är " + max);


        for (int i = 0; i < antal; i++) 
            {
                while(array[i]<min)
                    { 
                        min=array[i];
                    }
            } 


            System.out.println("min numret är " + min);





}}
4

4 に答える 4

5

min0 から始まるため、ユーザーが入力した正の数値よりも小さい値と比較されます。

一般に、ループに入る前に、最小の高値と最大の安値から始めます。これにより、使用可能な範囲から 2 つの数値が犠牲になりますが、通常は問題ありません。minまたは、 と の両方をmaxシーケンスの最初の要素に設定することもできます。

もう 1 つの問題は、while代わりに を使用することですif。結果を損なうことはありませんが、読みやすさが大幅に損なわれます。

最後に、同じループでminと の両方を検索できます。max

于 2012-08-07T16:12:14.337 に答える
1

最小値と最大値を計算するためにこれを行います。numbersという配列があるとします。以下に示すように変数min、maxを初期化します

int min = numbers[0];
int max = numbers[0];

for(int i=1; i< numbers.length(); i++) {
  if(min>numbers[i]) {
     min = numbers[i];
  }
  if(max<numbers[i]) {
    max = numbers[i];
  }
}

System.out.println("Max Is : " + max);
System.out.println("Min Is : " + min);
于 2012-08-07T16:17:45.517 に答える
0
max= 0;
min=0;
for (int i = 0; i < antal; i++)  {
    max = Math.max(max, array[i]);
    min = Math.min (min, array[i]);
}     
于 2012-08-07T16:14:52.380 に答える
0

min可能な最大の整数 ( ) で変数を初期化しますInteger.MAX_VALUE。これよりも小さい数値が検出されます。

max可能な限り小さい整数 ( ) で変数を初期化しますInteger.MIN_VALUE。これより大きい数値はすべて検出されます。

于 2012-08-07T16:12:56.410 に答える