diff --git a/pom.xml b/pom.xml index 8e594bb01a36601873e8b046d8e495de70730963..3542646ead3434c30d15c3262c3c32c4a32fcb51 100644 --- a/pom.xml +++ b/pom.xml @@ -26,19 +26,34 @@ - - - org.apache.maven.plugins - maven-jar-plugin - 3.3.0 - - - - com.example.climenu.Main - - - - - + + + + + org.apache.maven.plugins + maven-assembly-plugin + 3.6.0 + + + jar-with-dependencies + + + + com.example.climenu.Main + + + + + + make-assembly + package + + single + + + + + + \ 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 22b3841d26999e9dd73587ef5d9d876e4dfc9be4..fcc6c585e06478548b81489144da253f2f1bb135 100644 --- a/src/main/java/com/example/climenu/MenuCommand.java +++ b/src/main/java/com/example/climenu/MenuCommand.java @@ -38,7 +38,8 @@ public class MenuCommand implements Callable { } System.out.println(Ansi.AUTO.string("@|yellow 斐波那契数列(前" + fibonacciCount + "项):|@")); for (int i = 0; i < fibonacciCount; i++) { - System.out.println(" " + Ansi.AUTO.string("@|cyan " + fibonacci(i) + "|@")); + System.out.println(" " + Ansi.AUTO.string(stringWithMarkup: "@|cyan " + fibonacci(i + 1) + "|@")); +// 说明:i从0开始,+1后对应第1、2...n项,与方法逻辑匹配 } return 0; } @@ -55,11 +56,47 @@ public class MenuCommand implements Callable { System.out.println("2. " + Ansi.AUTO.string("@|yellow 计算斐波那契数列|@")); System.out.println("3. " + Ansi.AUTO.string("@|yellow 退出程序|@")); System.out.println(Ansi.AUTO.string("@|bold,blue ========================================|@") + "\n"); - System.out.println(Ansi.AUTO.string("@|italic 提示: 运行 --help 查看详细帮助信息。|@")); - } + System.out.println(Ansi.AUTO.string("@|italic 提示: 运行 --help 查看详细帮助信息。|@"));// 新增:选项交互处理 + Scanner scanner = new Scanner(System.in); + System.out.print("请选择操作(输入 1-3 或 'exit' 退出):"); + String choice = scanner.nextLine().trim(); + + switch (choice) { + case "1": + 选项1:显示当前时间(与 -t 参数逻辑统一) + String now = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); + System.out.println("⏰ " + Ansi.AUTO.string(stringWithMarkup: "@|bold,green " + now + "|@")); + break; + case "2": + // 选项2:计算斐波那契数列(已有代码,保持不变) + try { + System.out.print("请输入斐波那契数列的项数:"); + int num = Integer.parseInt(scanner.nextLine().trim()); + if (num <= 0) { + System.out.println(Ansi.AUTO.string(stringWithMarkup: "@|red 错误:请输入正整数!|@")); + break; + } + long result = fibonacci(num); // 调用公共计算方法 + System.out.println("第" + num + "项斐波那契数是:" + Ansi.AUTO.string(stringWithMarkup: "@|cyan " + result + "|@")); + } catch (NumberFormatException e) { + System.out.println(Ansi.AUTO.string(stringWithMarkup: "@|red 错误:请输入有效的整数!|@")); + } + break; + case "3": + case "exit": + 选项3:退出程序 + System.out.println("👋 " + Ansi.AUTO.string(stringWithMarkup: "@|green 退出程序,再见!|@")); + scanner.close(); // 退出前关闭Scanner + System.exit(0); + break; + default: + System.out.println(Ansi.AUTO.string(stringWithMarkup: "@|red 输入无效,请重新选择 1-3 或输入 'exit' 退出!|@")); + } - private long fibonacci(int n) { - if (n <= 1) return n; + // 公共斐波那契计算方法,供 Main 类调用 + public long fibonacci(int n) { + if (n <= 0) return 0; // 输入非正整数返回0 + if (n == 1 || n == 2) return 1; // 第1、2项均为1(符合常规定义) return fibonacci(n - 1) + fibonacci(n - 2); } } \ No newline at end of file