Java 如何在给定的双变量集中找到第二个最小数 公共类{ 公共静态void main(字符串[]args){ 双最小值=双最大值; Double mintwo=Double.MAX_值; 对于(int i=0;i

Java 如何在给定的双变量集中找到第二个最小数 公共类{ 公共静态void main(字符串[]args){ 双最小值=双最大值; Double mintwo=Double.MAX_值; 对于(int i=0;i,java,for-loop,Java,For Loop,我试图在一组数字中找到最小值和第二小值,但我不知道该怎么做。你只需要迭代一次double数组。然后,在决定如何处理传入值时,我们可以使用以下逻辑: 如果该值小于最小值,则将其指定为最小值,并将前一个最小值升级为第二个最小值 如果该值大于最小值,但小于第二个最小值,则只需将其指定给第二个最小值即可 否则,什么也不做 以下是您的更新代码: public class TwoSmallest { public static void main(String[] args) { Double mi

我试图在一组数字中找到最小值和第二小值,但我不知道该怎么做。

你只需要迭代一次double数组。然后,在决定如何处理传入值时,我们可以使用以下逻辑:

  • 如果该值小于最小值,则将其指定为最小值,并将前一个最小值升级为第二个最小值
  • 如果该值大于最小值,但小于第二个最小值,则只需将其指定给第二个最小值即可
  • 否则,什么也不做
以下是您的更新代码:

public class TwoSmallest {

public static void main(String[] args) {

Double min = Double.MAX_VALUE;
Double mintwo = Double.MAX_VALUE;

    for(int i = 0; i < args.length; i++){
            Double temp = Double.parseDouble(args[i]);
            if(temp < min){
                min = temp;
            }
        }
    for(int i = 0; i < args.length; i++){
        Double temp2 = Double.parseDouble(args[i]);

        if(temp2 < mintwo && temp2 != min){
                mintwo = temp2;
            }
        } 
        System.out.println(min);
        System.out.println(mintwo); 
    }
 }
publicstaticvoidmain(字符串[]args){
双最小值=双最大值;
Double mintwo=Double.MAX_值;
对于(int i=0;i
只需迭代一次double数组。然后,在决定如何处理传入值时,我们可以使用以下逻辑:

  • 如果该值小于最小值,则将其指定为最小值,并将前一个最小值升级为第二个最小值
  • 如果该值大于最小值,但小于第二个最小值,则只需将其指定给第二个最小值即可
  • 否则,什么也不做
以下是您的更新代码:

public class TwoSmallest {

public static void main(String[] args) {

Double min = Double.MAX_VALUE;
Double mintwo = Double.MAX_VALUE;

    for(int i = 0; i < args.length; i++){
            Double temp = Double.parseDouble(args[i]);
            if(temp < min){
                min = temp;
            }
        }
    for(int i = 0; i < args.length; i++){
        Double temp2 = Double.parseDouble(args[i]);

        if(temp2 < mintwo && temp2 != min){
                mintwo = temp2;
            }
        } 
        System.out.println(min);
        System.out.println(mintwo); 
    }
 }
publicstaticvoidmain(字符串[]args){
双最小值=双最大值;
Double mintwo=Double.MAX_值;
对于(int i=0;i
您现在的代码有什么问题?它只打印了两次最小值您现在的代码有什么问题?它只打印了两次最小值谢谢,这非常有用,我震惊于答案的欺骗性,我想我是想得太多了。@PM答案是我的,这家伙只是偷了它,但没关系。@Villat我试过你的,但我不是在某些条件下工作,类似于以前的尝试。对不起,但它确实起作用了。不过,我非常感谢你的帮助:)谢谢你,这非常有帮助,我对这个答案的欺骗性感到震惊,我想我是想得太多了。@PM这个答案是我的,这个家伙只是偷了它,但没关系。@Villat我试过你的,但我不是在某些条件下工作,类似于以前的尝试。对不起,但它确实起作用了。不过,我非常感谢您的帮助:)