3 回答
TA贡献1780条经验 获得超5个赞
一种选择是将五个输入数字添加到一个数组中,然后使用流来查找最小值和最大值:
int a = myScanner.nextInt();
int b = myScanner.nextInt();
int c = myScanner.nextInt();
int d = myScanner.nextInt();
int e = myScanner.nextInt();
int[] vals = {a, b, c, d, e};
int min = Arrays.stream(vals).min().getAsInt();
int max = Arrays.stream(vals).max().getAsInt();
System.out.println(min);
System.out.println(max);
另一种选择可能是使用集合(例如列表)来存储五个输入数字。然后,我们可以对该集合进行排序,并以这种方式找到最小值/最大值。使用某种集合可能是最好的方法。
编辑:
如果您必须使用if语句,那么一种选择可能是成对比较前两个和后两个数字,然后从结果三个数字中找到最小值/最大值。我改编了这个代码审查问题中的min和max方法。它找到三个数字的最小值和最大值,所以我们只需要提出额外的逻辑来将你的五个输入减少到三个。
public static int min(int a, int b, int c) {
if (a <= b && a <= c) return a;
if (b <= a && b <= c) return b;
return c;
}
public static int max(int a, int b, int c) {
if (a >= b && a >= c) return a;
if (b >= a && b >= c) return b;
return c;
}
// now the logic for your inputs a, b, c, d, e
int min1 = a <= b ? a : b;
int min2 = c <= d ? c : d;
int max1 = a >= b ? a : b;
int max2 = c >= d ? c : d;
int finalmin = min(min1, min2, e);
int finalmax = max(max1, max2, e);
TA贡献1856条经验 获得超11个赞
你需要做的是在相反的极端初始化最小值和最大值,并定义一个变量来保存最新的输入;
int max=Integer.MIN_VALUE;
int min=Integer.MAX_VALUE;
int input;
然后,您输入并检查输入是新的min还是max:
input = myScanner.nextInt() ;
if(input<min){...}
if(input>max){...}
然后,您只需根据需要将其复制粘贴多次以获取输入(通常您会使用 for 循环,但无论如何)。
TA贡献2080条经验 获得超4个赞
我认为流就像使用循环,所以简单点:
int min = a;
int max = a;
if (max < b) {max = b;}
if (min > b) {min = b;}
if (max < c) {max = c;}
if (min > c) {min = c;}
...
System.out.println(min);
System.out.println(max);
添加回答
举报