java为什么出现这种错误

如图,仅仅交换了入参位置,为什么得出的结果不同呢


import java.util.Arrays;
import java.util.Scanner;

public class 士兵过河 {
    public static void main(String[] args){
        Scanner in =new Scanner(System.in);
        int n=in.nextInt();
        int t= in.nextInt();
        in.nextLine();
        String[] str=in.nextLine().split(" ");
        int[] num=new int[n];
        int[] dp=new int[n];//j+1个人过河需要的最大时间
        //Arrays.fill(dp,Integer.MAX_VALUE);
        for(int i=0;i<n;i++){
            num[i]=Integer.valueOf(str[i]);
        }
        Arrays.sort(num);
        dp[0]=num[0];
        if(num[0]>t){
            System.out.println("0 0");
            return;
        }
        dp[1]=bijiao(num[0],num[1]);
        if(dp[1]>t){
            System.out.println(1+" "+dp[0]);
            return;
        }
        for(int i=2;i<n;i++){
            dp[i]=Math.min(dp[i-1]+bijiao(num[0],num[i])+num[0],
                        dp[i-2]+num[0]+bijiao(num[i-1],num[i])+num[1]+bijiao(num[0],num[1]));
            if(dp[i]>t){
                System.out.println(i+" "+dp[i-1]);
                return;
            }
        }
        System.out.println(n+" "+dp[n-1]);
    }
    public static int bijiao(int b,int a){
        if(a*10<b){
            return a*10;
        }
        return b;
    }
}

img

img

参数位置都换了,最终结果不一样很正常啊,
比如 你传入 3,4
int a, int b // a = 3, b = 4
int b, int a // b = 3, a = 4

  • 你可以看下这个问题的回答https://ask.csdn.net/questions/740487
  • 你也可以参考下这篇文章:Java基础 编写应用程序,从命令行输入两个整数参数,求他们的商,要求程序中捕获所有可能发生的异常
  • 除此之外, 这篇博客: Java数据结构之双向链表(配图详解,简单易懂)中的 🍓节点类及链表头尾的建立 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • class Node {
        public int data;//一个节点存在三个区域
        public Node prev;
        public Node next;
        public Node(int data) {//构造方法用于初始化实例对象
            this.data = data;
        }
    }
    public class MyLinkedList {
        public Node head;
        public Node tail;
        public void addFirst(int data);
        //1.头插法
        public void addLast(int data);
        //2.尾插法
        public void display();
        //3.打印链表
        public boolean contains(int key);
        //4.查找是否包含关键字key是否在单链表当中 
        public int size();
        //5.求链表长度
        public void addIndex(int index,int data);
        //6.任意位置插入,第一个数据节点为0号下标 
        public void remove(int key);
        //7.删除第一次出现关键字为key的节点 
        public void removeAllKey(int key);
        //8.删除所有值为key的节点 
        public void clear();
        //9.清空链表
    }
    

    以下即为双向链表的各接口的实现

    🍎 🍏 🍊 🍋 🍒 🍇 🍉 🍓 🍑 🍈 🍐 🍍 🍅 🏀 💡 🔑