我需要编写一个将从用户5号(a b c d e)获取的程序 并打印最低和最高数字。 我该怎么做,并使用较少的if-elss条件? 我不能使用arry或loops。
if (a>b) {
min=b ;
max=a ;
}else {
min=a ;
max=b ;
int temp = a ;
a=b ;
b=temp ;
}
if (b>c) {
min=c ;
}else {
if(c>max) {
max=c ;}
int temp = b ;
b=c ;
c=temp ;
}
if (c>d) {
min=d ;
}else {
if(d>max) {
max=d ;}
int temp = c ;
c=d ;
d=temp ;
}
if (d>e) {
min=e ;
}else {
if(e>max) {
max=e ;}
int temp = d ;
d=e ;
e=temp ;}
答案 0 :(得分:1)
一种选择是将五个输入数字添加到数组中,然后使用流查找最小值和最大值:
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
语句,则一个选择可能是比较成对的前两个数字和后两个数字,然后从结果三个数字中找到最小值/最大值。我从this Code Review问题改编了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);
答案 1 :(得分:0)
我认为流就像使用循环一样,所以简单点吧:
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);
答案 2 :(得分:0)
int min = Math.min(a, b);
min = Math.min(c, min);
min = Math.min(d, min);
min = Math.min(e, min);
int max = Math.max(a, b);
max = Math.max(c, max);
max = Math.max(d, max);
max = Math.max(e, max);
如果您不允许使用Math.min和Math.max,只需为自己实现一个方法,如:
int min(int a, int b) {
return a < b ? a : b;
}
int max(int a, int b) {
return a > b ? a : b;
}
答案 3 :(得分:0)
您需要做的是在相反的极端处初始化最小值和最大值,并定义一个变量来保存最新输入;
int max=Integer.MIN_VALUE;
int min=Integer.MAX_VALUE;
int input;
然后,您输入一个输入并检查输入是新的min
还是max
:
input = myScanner.nextInt() ;
if(input<min){...}
if(input>max){...}
然后,您只需将其复制粘贴多次即可,以获取输入(通常,您会使用for循环,但无论如何)。