【问题标题】:Java LinkedList to Store and Sort User Input. Please assistJava LinkedList 用于存储和排序用户输入。请协助
【发布时间】:2019-05-11 21:00:55
【问题描述】:

查看我的代码,我怎样才能让文本“输入 3 个课程系列,每行编码一个系列”,而“大小”和“已排序”具有不同的文本样式并带有下划线,以便于阅读?提前谢谢你。

public static void main(String[] args) {
    LinkedList<String> ListofCourses = new LinkedList<>();
    Scanner course = new Scanner(System.in);
    String line;
    String[] codes;
    System.out.println("Ron's Copy");
    System.out.println("\nEnter 3 collections of course codes one collection per line");

    /**The 'for' statement is used here to output the user input of courses 
     and loop back to have the user enter another set of courses until the user
     input has been completed 3 times successfully */

    for (int i = 0; i < 3; i++) {
        line = course.nextLine();
        codes = line.split(" ");
        //This statement adds input from sets
        ListofCourses.addAll(Arrays.asList(codes));

        //Sorting LinkedList with Collections.sort() method
        Collections.sort(ListofCourses);

        /*
         * The system.out.print statement print out the courses in a sorted
         * method and then loops back again to have the user input
         */

        System.out.print("\nSize: " + ListofCourses.size() + " Sorted: ");

        //The statements below will print sorted courses that were inputted by the user

        for (int r = 0; r < ListofCourses.size(); r++) {
            System.out.print(ListofCourses.get(r) + " ");
        }
        System.out.println();
        //clear the list so that next iteration gets a fresh empty list
        ListofCourses.clear();
    }
}

【问题讨论】:

  • Razro 你在代码中添加了什么?
  • 我认为他只是试图修复格式。您的某些代码不在代码表单内。
  • 你不能,你需要使用 JTextPane 为它制作一个自定义 GUI。
  • 谢谢 Samz,这就是我试图不做的事情,所以我将保持原样。谢谢大家的意见。
  • 评论:您的问题标题没有帮助。标题实际上应该告诉读者问题是关于什么的。在这种情况下,您要问的问题与数组列表或排序无关。它实际上是关于修改控制台输出的样式/字体特征。

标签: java sorting linked-list


【解决方案1】:

如果您询问如何在控制台文本下划线,简短的回答是您不能,但这个问题"How to print underlined string in console output in java" 可能会有所帮助。

【讨论】:

    【解决方案2】:

    您在这里遇到的是控制台输出的限制。

    控制台输出(通常)由模拟 1970 年代/1980 年代经典(硬件)终端的应用程序呈现。这些设备通过解释输出流中的字节(例如转义序列)来执行以下操作:

    • 在 (24x80) 屏幕上移动光标
    • 块擦除字符
    • 在“黑底白字”和“黑底白字”之间切换
    • 更改字符或背景颜色(高级!)
    • 字符下划线或删除线(高级!)
    • 备用字体切换(高级!)
    • 等等。

    问题在于不同的硬件终端具有不同的功能,以及解释转义序列的不同(非标准)方式。最终,在 DEC VT100 终端的功能和一些标准化方面出现了一些全行业的融合。结果是 ANSI / VT100 终端控制转义序列:

    随着 IBM PC(和类似设备)的出现,硬件终端已经过时,取而代之的是您的操作系统提供的终端/控制台仿真器软件。但是,一些操作系统模拟器软件继续实现“ANSI/VT100”系统。

    这对你有什么帮助?

    嗯...如果您的控制台程序/仿真器支持 VT100 序列,那么您应该能够通过将适当的序列写入标准输出来执行诸如下划线之类的操作。但是,如果您这样做并且您的应用程序的用户在不支持 VT100 的控制台上运行它,那么结果将是一团糟。

    标准的 Java SE 库不支持这种东西,但是有一些 3rd-party 替代方案;见What's a good Java, curses-like, library for terminal applications?


    总而言之,做这种事情是可能的,但是工作量很大。

    在您的情况下,尝试这样做是一个坏主意,因为您对应用程序运行的环境没有任何发言权。 (在标记时由你的导师指导!)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多