Java 不带if条件的三排序
在阅读Java入门书籍时,我偶然发现了一个练习: 编写一个从命令中获取三个int值的程序 行并按升序打印。使用Math.min和Math.max 问题是如果条件还没有被考虑,那么逻辑上我就不能使用它们 我试图使用一个类似的C语言问题,但没有遇到语句错误 是的,我没有使用Math.min和Math.max,因为在它们的帮助下,我可以找到min和max,但找不到中间值。Java 不带if条件的三排序,java,algorithm,conditional-statements,Java,Algorithm,Conditional Statements,在阅读Java入门书籍时,我偶然发现了一个练习: 编写一个从命令中获取三个int值的程序 行并按升序打印。使用Math.min和Math.max 问题是如果条件还没有被考虑,那么逻辑上我就不能使用它们 我试图使用一个类似的C语言问题,但没有遇到语句错误 是的,我没有使用Math.min和Math.max,因为在它们的帮助下,我可以找到min和max,但找不到中间值。 有人知道如何解决这个问题吗?这不是一个完整的答案,但值得思考 int a = 2; int b = 5; System.out.p
有人知道如何解决这个问题吗?这不是一个完整的答案,但值得思考
int a = 2;
int b = 5;
System.out.print(Math.min(a, b));
System.out.print(Math.max(a, b));
将按升序打印a和b。您只需将其推广到2个以上的数字…找到最小值和最大值,然后找到中间数:
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);
关于这一点,我已经回答了另一个你可以看到的问题。找到最小值很容易,我们可以找到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));
看我的答案,我更喜欢三种方法it@RealSkeptic是的,看起来像是复制品。在问我的朋友之前,我还没有找到这个答案。我怎样才能删除我的问题?如果你没有一个删除链接,这可能会发生,因为你已经投票的答案,你可以标记它的版主注意,并要求他们照顾它。工作伟大的ints,但双打它可以落在你的脚上…是的,当然,我在我的另一个答案中提到了其他方法,这些方法对doublesMath.min和Math.max没有问题,它们只适用于2个参数。
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));