Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 不带if条件的三排序_Java_Algorithm_Conditional Statements - Fatal编程技术网

Java 不带if条件的三排序

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

在阅读Java入门书籍时,我偶然发现了一个练习:

编写一个从命令中获取三个int值的程序 行并按升序打印。使用Math.min和Math.max

问题是如果条件还没有被考虑,那么逻辑上我就不能使用它们

我试图使用一个类似的C语言问题,但没有遇到语句错误

是的,我没有使用Math.min和Math.max,因为在它们的帮助下,我可以找到min和max,但找不到中间值。
有人知道如何解决这个问题吗?

这不是一个完整的答案,但值得思考

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));