Java实现终端可编辑文本并存储至变量的技术方案咨询
Java实现终端可编辑的艺术家选择输入功能
要在Java里实现终端中可编辑的输入(允许用户修改已显示的当前选择),原生的Scanner或System.in无法支持这种实时编辑交互,得借助专门处理终端交互的库,JLine3是最常用的方案,下面是具体实现:
依赖引入(Maven)
<dependency> <groupId>org.jline</groupId> <artifactId>jline</artifactId> <version>3.24.1</version> <!-- 使用最新稳定版即可 --> </dependency>
实现代码
import org.jline.reader.LineReader; import org.jline.reader.LineReaderBuilder; import org.jline.terminal.Terminal; import org.jline.terminal.TerminalBuilder; public class ArtistEditor { public static void main(String[] args) throws Exception { // 初始化终端实例 try (Terminal terminal = TerminalBuilder.builder().system(true).build()) { LineReader reader = LineReaderBuilder.builder() .terminal(terminal) .build(); String currentArtist = "example"; // 初始的艺术家选择值 String prompt = "Your favourite artist is: "; // 读取用户可编辑的输入,传入初始值让用户直接修改 String newArtist = reader.readLine(prompt, currentArtist); // 将新选择存储到变量,后续可按需使用 System.out.println("\n已更新喜爱的艺术家为: " + newArtist); } } }
功能说明
- 运行程序后,终端会显示
Your favourite artist is: example,光标停在example末尾 - 用户可通过退格键删除原有内容,也可直接输入新内容覆盖,完全匹配你给出的操作示例流程
- 输入完成按回车后,新内容会存入
newArtist变量
关键细节
- JLine3会自动适配Windows、Linux、macOS等不同系统的终端特性,无需额外处理跨平台兼容问题
- 如果需要更复杂的逻辑(比如限制输入字符、添加自动补全),可通过扩展
LineReader的配置实现
内容的提问来源于stack exchange,提问作者wyznel
相关产品推荐
相关产品推荐

