2016-10-14 39 views
0

我的新问题是myMin等于数字相等之前的最后距离而不是实际最小值。例如说我输入的前两个数字是1和2,下一个是1和3,然后是1和1.它说我的最小值是2.0。这是我应该得到的任务。采取最新信息而不是仅更新的方法

输入数字1:9

输入数字2:1

输入数字1:7

输入号码2:2

输入数字1:4

输入编号2:4

最小距离为:5.0。

输入数字1:20

输入数字2:3

输入数字1:23

输入号码2:23

5.0 + 17.0 = 22.0

MY CODE:

double myMin = Double.MAX_VALUE; 
double Min1,Min2; 

while (!(num1==num2)) { 
    pairsMin(num1, num2, myMin); 
    Min1 = pairsMin(num1, num2, myMin); 
    System.out.print("Enter number 1: "); 
    num1 = in.nextDouble(); 
    System.out.print("Enter number 2: "); 
    num2 = in.nextDouble(); 

    if (num1==num2) { 
     System.out.print("\nThe minimum distance is: " + Min1 + "\n\n"); 
     myMin = Double.MAX_VALUE; 
     System.out.print("Enter number 1: "); 
     num1 = in.nextDouble(); 
     System.out.print("Enter number 2: "); 
     num2 = in.nextDouble(); 
     while (!(num1==num2)) { 
     pairsMin(num1, num2, myMin); 
     Min2 = pairsMin(num1,num2,myMin); 
     System.out.print("Enter number 1: "); 
     num1 = in.nextDouble(); 
     System.out.print("Enter number 2: "); 
     num2 = in.nextDouble(); 

     if(num1==num2) { 

      double totMin = Min1+Min2; 
      System.out.print("\n" + Min1 + " + " + Min2 + " = " + totMin + "\n"); 
     } 
     } 
    } 
} // end while loop 
} // end main method 
public static double pairsMin(double num1, double num2, double myMin){ 
    double dist = Math.abs(num1-num2); 
    if (dist<myMin) { // if dist is smaller than the minimum, then dist will be the new minimum 
     myMin = dist; 
    } 
    return myMin; 
} 
} 
+0

今天早些时候你没有发布这个确切的问题吗? (原谅我,如果我错了,我记得看到完全相同的问题) – ItamarG3

+0

这是同样的任务问题,但我有两个不同的问题。第一个是如何只在while循环内部打印一些东西,而这个是如何让它更新myMin,而不是仅仅使用最后一个myMin。 –

+0

那么你有没有尝试从你最后一个问题得到解决这个问题?您能否重构代码以便阅读更容易? – ItamarG3

回答

0

更改两行

pairsMin(num1, num2, myMin); 

myMin = pairsMin(num1, num2, myMin); 

在你总是比较Double.MAX_VALUE,而不是新的最小值的时刻。

+0

工作正常!谢谢!我不敢相信这件事很简单。我只是让它比实际更难。 –

+0

@NoraDaly如果此答案解决了您的问题,请将其标记为已接受。 – Turamarth

相关问题