if语句是Java中计算最小数的标准方法
我写了一个计算最小数的程序。但我不知道编程人员会怎么做。 我是通过“IF语句”实现的,这是有效的,但不确定它是标准的还是通用的编码方式
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
System.out.print("Enter three values: ");
int num1 = in.nextInt();
int num2 = in.nextInt();
int num3 = in.nextInt();
System.out.print(smallest(num1, num2, num3));
}
public static int smallest(int num1, int num2, int num3)
{
if (num1 < num2 && num1 < num3){return num1;}
else if (num2 < num1 && num2 < num3){return num2;}
else return num3;
}
# 1 楼答案
一种方法是创建一个整数数组,然后对其排序并获取第一个元素
比如:
另外,鉴于您已经为它创建了一个函数,您可以将该函数转换为以下函数,而不是我上面的方法:
在本例中,您使用的是varargs,这意味着您可以输入任意数量的int。varargs参数在进入函数后本质上是一个数组,因此您可以像处理任何数组一样处理它。不过,请确保检查数组中的项数,因为varargs也可以是0
您可以使用与旧代码相同的方式调用代码:
int smallest = smallest(5, 10, 15);
将返回5
# 2 楼答案
您可以解决查找数组(或列表)的最小值这一更一般的问题。这是一个坏主意,因为你只需要找到最小的元素。这样做的一个基本技巧是:
这有一个
O(n)
复杂度,这对于未排序的数组来说是最小的,因为您必须遍历整个数组当然,这仅在数组已经充满数字的一般情况下才是最佳的。如果您只需要从用户的输入中获取最小值,那么您肯定应该使用arshajii的算法来节省一点内存,因为它允许您不存储整个阵列
# 3 楼答案
有Math#min方法。你可以用这个:
# 4 楼答案
我会这样做:
它不仅是最小的优雅代码,通过使用varargs参数,它还可以处理任意数量的整数
调用它的代码不需要修改
# 5 楼答案
另一个想法是,甚至不存储所有的数字,而是只跟踪最小的数字,如果这就是您想要的:
如果您以后确实不需要访问最小输入以外的输入,那么这种方法可能是最佳的