2012-08-07 39 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