From 3972d943c11f6e88f0fb5e7aac2a70380e3124e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E5=AE=87=E8=88=AA?= <16423805+liu-yuhangs@user.noreply.gitee.com> Date: Fri, 5 Dec 2025 10:32:25 +0800 Subject: [PATCH] 1 --- TODO.md | 2 +- pom.xml | 25 +++++++++++++++++++ src/main/java/com/example/climenu/Main.java | 23 ++++++----------- .../java/com/example/climenu/MenuCommand.java | 8 +++++- 4 files changed, 41 insertions(+), 17 deletions(-) diff --git a/TODO.md b/TODO.md index 93a4492..3fc6758 100644 --- a/TODO.md +++ b/TODO.md @@ -26,6 +26,6 @@ Caused by: java.lang.ClassNotFoundException: picocli.CommandLine$Help$Ansi ``` ## 问题2 -目前在交互式菜单中,输入选项2的工作流程和直接使用命令行 `-f 5`的工作流程是不一致的,将这两个流程统一起来。 +**目前在交互式菜单中,输入选项2的**工作流程和直接使用命令行 `-f 5`的工作流程是不一致的,将这两个流程统一起来。 修复上述问题。 \ No newline at end of file diff --git a/pom.xml b/pom.xml index 8e594bb..10ff3ac 100644 --- a/pom.xml +++ b/pom.xml @@ -39,6 +39,31 @@ + + + org.apache.maven.plugins + maven-assembly-plugin + 3.6.0 + + + + com.example.climenu.Main + + + + jar-with-dependencies + + + + + make-assembly + package + + single + + + + \ No newline at end of file diff --git a/src/main/java/com/example/climenu/Main.java b/src/main/java/com/example/climenu/Main.java index 7724999..48d914b 100644 --- a/src/main/java/com/example/climenu/Main.java +++ b/src/main/java/com/example/climenu/Main.java @@ -30,23 +30,22 @@ public class Main { switch (input) { case "1": // 模拟执行 -t 命令 - System.out.println("🕒 " + CommandLine.Help.Ansi.AUTO.string("@|bold,green " + java.time.LocalDateTime.now().format(java.time.format.DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) + "|@")); + String[] timeArgs = {"-t"}; + new CommandLine(new MenuCommand()).execute(timeArgs); break; case "2": System.out.print("请输入要计算的斐波那契数列项数 N: "); try { String fibInput = scanner.nextLine().trim(); int n = Integer.parseInt(fibInput); - if (n <= 0) { - System.err.println(CommandLine.Help.Ansi.AUTO.string("@|red 请输入一个正整数。|@")); - break; - } - System.out.println(CommandLine.Help.Ansi.AUTO.string("@|yellow 斐波那契数列(前" + n + "项):|@")); - for (int i = 0; i < n; i++) { - System.out.println(" " + CommandLine.Help.Ansi.AUTO.string("@|cyan " + fibonacci(i) + "|@")); - } + // 使用统一的方式处理,直接调用MenuCommand中的call方法 + CommandLine cmd = new CommandLine(menuCmd); + cmd.parseArgs("-f", String.valueOf(n)); + menuCmd.call(); } catch (NumberFormatException e) { System.err.println(CommandLine.Help.Ansi.AUTO.string("@|red 输入无效,请输入一个数字。|@")); + } catch (Exception e) { + System.err.println(CommandLine.Help.Ansi.AUTO.string("@|red 输入无效:" + e.getMessage() + "|@")); } break; case "3": @@ -61,10 +60,4 @@ public class Main { System.out.println(); // 空行分隔 } } - - // 为了在 Main 中复用,将 fibonacci 方法也移到这里,或在 MenuCommand 中设为 public static - private static long fibonacci(int n) { - if (n <= 1) return n; - return fibonacci(n - 1) + fibonacci(n - 2); - } } \ No newline at end of file diff --git a/src/main/java/com/example/climenu/MenuCommand.java b/src/main/java/com/example/climenu/MenuCommand.java index 22b3841..8518c39 100644 --- a/src/main/java/com/example/climenu/MenuCommand.java +++ b/src/main/java/com/example/climenu/MenuCommand.java @@ -58,8 +58,14 @@ public class MenuCommand implements Callable { System.out.println(Ansi.AUTO.string("@|italic 提示: 运行 --help 查看详细帮助信息。|@")); } - private long fibonacci(int n) { + // 将此方法设为public,以便在Main类中可以直接调用 + public long fibonacci(int n) { if (n <= 1) return n; return fibonacci(n - 1) + fibonacci(n - 2); } + + // 添加获取fibonacciCount的方法 + public Integer getFibonacciCount() { + return fibonacciCount; + } } \ No newline at end of file -- Gitee