【问题标题】:Find the alphabetically first String using Java使用 Java 查找按字母顺序排列的第一个字符串
【发布时间】:2021-08-29 18:41:44
【问题描述】:

我的教授让我为这段代码创建一个解决方案,但我无法得到很好的输出。 他问了我几件事:

  1. 要求用户输入一个String值,值“END”,终止循环和程序,不包含在Strings的计算中。

  2. 最后,您应该输出用户输入的哪些字符串是按字母顺序排在第一位的字符串。所以例如:如果用户输入“aac”和“aab”,“aab”首先出现。

  3. 我已经创建了代码,但是由于某种原因,在输出的末尾它给了我值“END”作为第一个按字母顺序排列的字符串,我有点困惑。

不知道教授问的对不对还是只有我不明白!

到目前为止我的代码:

import java.util.Scanner;

public class Ush1_NOTDONE {
    public static void main(String[]args) {
        Scanner sc =  new Scanner(System.in);
        System.out.println("Type a String value, the value \"END\" terminates the code");
        String word = sc.nextLine();

        final String SENTINEL = "END";

        String firstString = null;
        do {
            if(!word.equals(SENTINEL)) {
                System.out.println("Type a String value, the value \"END\" terminates the code");
                word = sc.nextLine();

                if(firstString == null || word.compareTo(firstString)<0 ){
                    firstString = word;
            }

        }}while(!(word.equals(SENTINEL)));

        System.out.println("First alphabetically string is: " + firstString);
        
    }

}

【问题讨论】:

    标签: java string loops output java.util.scanner


    【解决方案1】:

    尽量避免这样做。而是在 while 条件下进行赋值(java 中的赋值返回一个值)。

    public class HelloWorld{
    
         public static void main(String []args){
            String word;
            Scanner sc = new Scanner(System.in);
            String first = null;
            
            while(!(word = sc.nextLine()).equals("END")) {
                if(first == null || word.compareTo(first) < 0) {
                    first = word;
                }
            }
            
            System.out.println(first);
         }
    }
    

    【讨论】:

    • 谢谢,我稍微修改了一下,效果很好!
    • 很高兴它对您有所帮助。然后将此标记为已接受的答案:)
    猜你喜欢
    • 1970-01-01
    • 2017-07-23
    • 1970-01-01
    • 1970-01-01
    • 2020-08-17
    • 1970-01-01
    • 1970-01-01
    • 2013-06-08
    • 2012-01-31
    相关资源
    最近更新 更多