都在注释中了

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String s = scanner.nextLine();
        String[] split = s.split("/");
        String s1 = split[0];
        List<String> result = new ArrayList<>();
        Long molecular = Long.valueOf(s1);
        Long denominator = Long.valueOf(split[1]);
        // 初始化
        List<Long> substruction = substruction(molecular, denominator, 0L, denominator);
        
        // 从1/2开始
        Long i = 2L;
        while (substruction.get(0)!=0){
           // i>0是必然true molecular大于1说明还能继续往下减,往下分解
            while (i>0&&molecular>1){
                //每次减去1/i
                List<Long> substruction1 = substruction(molecular, denominator, 1L, i);
                // 如果能减 说明可以分解  存结果  更新值 i++继续往后  并结束此次内循环
                if (substruction1.get(0)>=0){
                    result.add(String.valueOf(1)+"/"+ String.valueOf(i));
                    substruction.set(0,substruction1.get(0));
                    substruction.set(1,substruction1.get(1));
                    molecular = substruction1.get(0);
                    denominator = substruction1.get(1);
                    i++;
                    break;
                }
                i++;
            }
           // 如果上一次相减后 分子为1  结果是埃及分数  符合要求 添加到结果集中 循环结束
            if (molecular == 1){
                result.add(String.valueOf(1)+"/"+ String.valueOf(denominator));
                break;
            }
        }
            // 结果输出
        for (int j = 0; j < result.size(); j++) {
            if (j!=result.size()-1) System.out.print(result.get(j)+"+");
            else System.out.print(result.get(j));
        }

    }

    // 写一个分数相减的方法  返回值是分子和分母
    public static List<Long> substruction(Long mole1,Long deno1,Long mole2,Long deno2){
        List<Long> list = new ArrayList<>();
        // 如果分母一样 则分子相减
        if (deno1 == deno2){
            list.add(mole1-mole2);
            list.add(deno1);
        } else {
            // 分母不一样  就通分后进行计算

            Long newmodel = mole1*deno2-mole2*deno1;
            Long newdeno = deno1*deno2;
            list.add(newmodel);
            list.add(newdeno);
        }

        return list;
    }
}