Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.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 如何比较三个双打,找出最大值、最小值和中间值?(以尽可能短的方式)_Java - Fatal编程技术网

Java 如何比较三个双打,找出最大值、最小值和中间值?(以尽可能短的方式)

Java 如何比较三个双打,找出最大值、最小值和中间值?(以尽可能短的方式),java,Java,我将只从用户那里获取3个值,因此只有3个可能的答案。您还可以假设用户不会三次输入0,如果他们三次输入相同的值也没有关系。我可以为这些场景创建我自己的东西(我已经有了) 我之所以挣扎是因为以下几点: 我知道max,现在我应该复制max代码来创建一个最小值(因为这就是我刚刚学到的(intro-CS类))。但是,我如何知道如何排除随机选择的最小值?中位数也一样。您可以尝试以下方法: float l = 2.0f; float h = 3.0f; float w = 1.5f;

我将只从用户那里获取3个值,因此只有3个可能的答案。您还可以假设用户不会三次输入0,如果他们三次输入相同的值也没有关系。我可以为这些场景创建我自己的东西(我已经有了)

我之所以挣扎是因为以下几点:


我知道max,现在我应该复制max代码来创建一个最小值(因为这就是我刚刚学到的(intro-CS类))。但是,我如何知道如何排除随机选择的最小值?中位数也一样。

您可以尝试以下方法:

    float l = 2.0f;
    float h = 3.0f;
    float w = 1.5f;
    float[] arr = new float[] {l, h, w};
    Arrays.sort(arr);
    System.out.println("Min: " + arr[0] + ", Medium:  " +  arr[1]  + ", Max:  " +  arr[2]);

您可以找到以下三个值的最小值、中等值和最大值:

double a = ...;
double b = ...;
double c = ...;

if (a > b) {
  double swap = a;
  a = b;
  b = swap;
}

if (b > c) {
  double swap = b;
  b = c;
  c = swap;
}

if (a > b) {
  double swap = a;
  a = b;
  b = swap;
}

System.out.println("Min: "+a);
System.out.println("Med: "+b);
System.out.println("Max: "+c);

我和你在一起直到最后两句话。“排除最小值”等。?“随机选择”?我没有看到任何随机选择。请澄清一下,我基本上做了双倍max=l,开始比较。但这是“随机”选择的,因为我不知道实际最大值是多少。要计算最大值,请将初始值设置为Integer.MIN_值。要计算最小值,请将初始值设置为Integer.MAX\u值。这应该可以解决这个问题。这个问题相当于对三个数字进行排序,然后你只需要列出
min,med,max
。对我来说,这看起来像是一个家庭作业问题,但我所要做的就是通过将条目与当前标题持有者进行比较,记录每个条目后哪个数字是最大值,哪个数字是最小值。用户输入1,最大值和最小值为1,用户输入2,最大值现在为2,最小值仍然为1。用户输入3,最大值现在是3,最小值仍然是1。打印最大值和最小值,得到3和1。尽管如此,khelwood使用的冒泡排序方法只适用于少数条目,并且类似于您为其他读者所做的工作——这只是一个简单的硬编码冒泡排序,超过三个条目items@Alnitak我发誓再也不写泡泡糖了!可能不值得尝试硬编码三个值的合并排序。+1对于其他读者,@Alntiak是正确的。这个算法将ABC从最小到最大进行排序。如果a更大,它翻转a和b。如果b当前较大,则b和c会翻转。最后,如果a中的任何一个较大,那么a和b将被翻转。这看起来很有希望,但我还不知道如何控制数组,特别是在我的代码的其余部分中使用。这对我来说会很复杂,但我认为其他人可能会发现它很有用。无论如何,你可能会在CS类中得到关于算法的指导,所以只需将数据放入
数组中。sort
很难教会你这一点。@Alnitak在问题陈述中没有提到它不应该使用sort。如果使用If-else结构,解决方案可能适用于3个值,但随着浮点参数数量的增加,代码将变得更加混乱。在非排序方法中,仅将解决方案扩展到4个浮点本身就让我感到害怕:-)
double a = ...;
double b = ...;
double c = ...;

if (a > b) {
  double swap = a;
  a = b;
  b = swap;
}

if (b > c) {
  double swap = b;
  b = c;
  c = swap;
}

if (a > b) {
  double swap = a;
  a = b;
  b = swap;
}

System.out.println("Min: "+a);
System.out.println("Med: "+b);
System.out.println("Max: "+c);