2014-12-05 88 views
-1

我写了一个程序,用户将输入10个数字,最终这些数字将被存储在数组列表中。如何计算ArrayList中的最小数字?

当用户输入完数字后,我必须在ArrayList中找到最小的数字并打印出来。

我的代码:

package findingsmallestandbiggestnum; 

import java.util.Scanner; 
import java.util.ArrayList; 

public class FindingSmallestAndBiggestNum { 

    public static void main(String[] args) { 
     Scanner input = new Scanner(System.in); 
     ArrayList<Integer> uInput = new ArrayList(); 

     for (int i = 1; i <= 10; i++) { 
      System.out.println("Enter 10 numbers: "); 
      uInput.add(input.nextInt()); 
     } 

     System.out.println("You have entered: " + uInput); 

     //calculate the smallest integer in the array 
     //for (int i = 0; i < uInput.length; i++) { 
     //} 
    } 

} 
+1

你已经知道你想要的最小的数字。有一段时间,认为自己是电脑 - 如果给出10个数字,你会怎么去寻找最小的数字?一旦你有了,剩下的就落在原地。 :-) – 2014-12-05 15:55:31

+0

附注:包名应清晰简洁。 – akaHuman 2014-12-05 15:55:43

+0

你如何找到最低价值?当您对最小值/最大值感兴趣时,读取一系列无序数字时,您会做什么? – Pshemo 2014-12-05 15:57:18

回答

1

使用此:

Collections.min(uInput); 
+1

OP可能是为了做作业,所以'Collections.min()'可能不是一个可行的解决方案。 – GriffeyDog 2014-12-05 15:59:46

+1

@GriffeyDog,但也许,但OP应该告诉有关这个问题 – 2014-12-05 16:02:34

1

在这里仅列出运行并保存最小的元素:

int min = uInpunt.get(0); 
for (int i = 1; i < uInput.size(); i++) { 
    int curr = uInput.get(i); 
    if (curr < min) { 
     min = curr; 
    } 
} 
System.out.println ("The smallest number is: " + min); 
0

这是一步一步版。也适用于没有数字的情况。

Integer smallest; 
for (Integer num : uInput) { 
    if(smallest == null || num < smallest) { 
    smallest = num; 
    } 
} 
+0

虽然,你想初始化'最小'为'null',对吧?另外,'for'应该是小写。 – resueman 2014-12-05 16:00:13

+0

它会自动初始化为空,对吧? – Erik 2014-12-05 16:01:21

+2

我不认为这适用于局部变量。 – resueman 2014-12-05 16:02:04

-2

一个潜在的解决办法是有一个最小的索引。把我的头未经考验的顶部将是

int smallest = 0; 

for(int i = 0; i < uInput.size(); i++) { 
    if (uInput.get(i) < smallest) { 
     smallest = uInput.get(i); 
    } 
} 

这种方法也是行之有效的,如果你需要找到最大数量为你只是反转的逻辑。

编辑:甚至没有意识到抱歉。将最小值设置为0将仅在找到最大值时发挥作用,这是我的错误。更好的解决方案是做什么mureinik在这个线程和其他地方

int smallest = uInput.get(0); 
相关问题