2012-08-07 41 views
0

您好我正在寫這個數組以讀取30個整數並讀出最小值和最大值。我已經解決了最大,但最低不工作,所有的幫助表示讚賞,至於說我已經解決了最大,但最低不工作java array returned min

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); 





}} 
+0

初始化'min'給出用'Integer.MAX_VALUE'。而且,我會用'if's替換for循環中的'while'。 – Baz 2012-08-07 16:11:15

回答

5

min在零開始了,所以它比較低於用戶輸入的任何正數。

一般而言,您在進入循環之前先從最小高點和最低點開始。這犧牲了可用範圍內的兩個數字,通常是可以的。或者,您可以將minmax都設置爲序列的初始元素。

另一個問題是您使用while而不是if:它不會傷害結果,但它確實會影響可讀性。

最後,您可以在同一個循環中搜索minmax

0

使用可能的最大整數初始化您的min變量(Integer.MAX_VALUE)。任何小於此值的數字都會被找到。

使用盡可能最小的整數初始化您的max變量(Integer.MIN_VALUE)。任何大於此的數字都會被找到。

0
max= 0; 
min=0; 
for (int i = 0; i < antal; i++) { 
    max = Math.max(max, array[i]); 
    min = Math.min (min, array[i]); 
}  
1

爲此計算最小和最大值 假設您有數組稱爲數字。 初始化變量最小值,最大值低於

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); 
+0

這是正確的解決方案 – 2012-08-07 17:33:08