在为初学者阅读Java时,我偶然发现了一个练习:
编写一个从命令中获取三个
int
值的程序 行并按升序打印它们。使用Math.min()
和Math.max()
。
问题是尚未考虑if
条件,所以逻辑上我不能使用它们。
我尝试在C中使用answer类似问题,但遇到not a statement
错误。
public class three_sort
{
public static void main(String[] args)
{
int a = Integer.parseInt( args[0] );
int b = Integer.parseInt( args[1] );
int c = Integer.parseInt( args[2] );
int min = a;
(min > b) && (min = b); //finding minimum
(min > c) && (min = c);
System.out.println(min);
int i = a;
(b < max) && (b > min) && (i = b); // finding intermediate
(c < max) && (c > min) && (i = c);
System.out.println(i);
int max = a;
(max < b) && (max = b); //finding maximum
(max < c) && (max = c);
System.out.println(max);
}
}
是的,我没有使用Math.min
和Math.max
,因为在他们的帮助下我可以找到最小值和最大值,但找不到中间值。
有没有人知道如何解决这个问题?
答案 0 :(得分:4)
找到最小值和最大值后找到中间数字:
int a = Integer.parseInt( args[0] );
int b = Integer.parseInt( args[1] );
int c = Integer.parseInt( args[2] );
int x = Math.min(a, b);
int min = Math.min(x,c);
int z = Math.max(a, b);
int max = Math.max(z, c);
int mid = a+ b+ c- min - max;
System.out.print(min);
System.out.print(mid);
System.out.print(max);
对此我已经回答了另一个问题here,你可以看到它。
答案 1 :(得分:1)
不是一个完整的答案,但有些值得思考......
int a = 2;
int b = 5;
System.out.print(Math.min(a, b));
System.out.print(Math.max(a, b));
将按升序打印a
和b
。你只需要将其概括为两个以上的数字......
答案 2 :(得分:1)
找到最小值非常简单,我们可以找到a
和b
之间的最小值,比如min_a_b
,然后是min_a_b
和c
之间的最小值。同样的逻辑是最大的。
为了找到第二个更大的我们在每对之间取最大值。如果我们这样做,我们将只采取更大和更大的第二个。所以我们在它们之间采取最小值
int min_a_b = Math.min(a, b);
int max_a_b = Math.max(a, b);
int max_b_c = Math.max(b, c);
int max_a_c = Math.max(a, c);
System.out.println(Math.min(min_a_b, c));
System.out.println(Math.min(Math.min(max_a_b, max_b_c), max_a_c));
System.out.println(Math.max(max_a_b, c));