我想使用varags方法来获取各种整数的输入并找出最大的&
public class MINMAX {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int a = in.nextInt();
int b = in.nextInt();
int c = in.nextInt();
Maximum(a,b,c);
Minimum(a,b,c);
}
static void Maximum(int ...v) {
int max = Math.max(a,Math.max(b,c));
System.out.println("The Largest no. is: "+max);
}
static void Minimum(int ...v) {
int min = Math.min(a,Math.min(b,c));
System.out.println("The Smallest no. is: "+min);
}
}
这里,我从用户那里获取输入a,b,c来找出最大值&但是我想知道如何在Varargs方法中针对特定的元素。
首先,想象一下如果你有10个输入而不是3个,你需要多少个Math.min
。
你需要的是一个可以接受不同数量输入的方法(这就是为什么我们有变量),这样当你想要支持更多输入时就不需要改变任何东西。因此,您需要处理可变参数(可以作为数组处理),而不是特定的元素。
此外,通过使用IntStream#summaryStatistics
,您可以一次获得min和max。
static void maximumAndMaximum(int... v) {
IntSummaryStatistics statistics = IntStream.of(v).summaryStatistics();
System.out.println("The Smallest no. is: " + statistics.getMin());
System.out.println("The Largest no. is: " + statistics.getMax());
}
您可以将其作为方法参数中给出的int基本类型数组访问。例如
static void Maximum(int ...v) {
int max = Math.max(v[0],Math.max(v[1],v[2]));
System.out.println("The Largest no. is: "+max);
}
static void Minimum(int ...v) {
int min = Math.min(v[0],Math.min(v[1],v[2]));
System.out.println("The Smallest no. is: "+min);
}
我建议您在开始进程之前养成检查目录大小和其他控件的习惯。
varargs语法(... parameterName
)只是说参数是一个数组的另一种方式,不是吗?java.util.Collections
类有一些您可能会觉得有用的方法。我怀疑你可能需要将数组转换为实现Collection
接口的东西来使用它们(例如java.util.ArrayList
)。