如何打印三个字符串中最长的一个?

how to print the longest of three strings?

是否有使用 if/else 方法 select 三个字符串 (s1,s2,s3) 中最长的一个的快速方法?

我正在使用 Java

我试过用这样的东西

if (s1.length() > s2.length()) {
    System.out.println(s1); ...

但没做对。

不要尝试用一个 if-else 构造来编写所有可能的组合,因为如果添加更多字符串,复杂性将呈指数级增长。

此解决方案适用于少量具有线性复杂度的字符串:

string longest = s1;
if (s2.length() > longest.length()) {
    longest = s2;
}
if (s3.length() > longest.length()) {
    longest = s3;
}
System.out.println(longest);

对于更多的字符串,将它们放入集合中并使用循环找到最长的字符串。

您可以在 C# 中使用 if、else if、else(如果您实际上没有使用 Java,看起来像您)来处理此问题。

string current = str;

if(str2.Length > current.Length)
{
    current = str2;
}
if (str3.Length > current.Length)
{
    current = str3;
}

除非使用 if/else 是此代码的要求,否则使用集合和 LINQ 将是更简洁的选择。

List<string> strList = new List<string>
{
    "str",
    "strLen",
    "strLength"
};

// This aggregate will return the longest string in a list.
string longestStr = strList.Aggregate("", (max, cur) => max.Length > cur.Length ? max : cur);
            string a = "123";
            string b = "1322";
            string c = "122332";
            if (a.Length > b.Length && a.Length > c.Length)
            {
               
                    Console.WriteLine(a);                    
            }
            else if (b.Length > c.Length)
            {
                Console.WriteLine(b);
            }
            else
            {
                Console.WriteLine(c);
            }
        }

if/then/else 构造 Java 与 C# 相同。您可以使用上面的解决方案。 LINQ 就像 Java 中的 Streams。在 Java 你可以编码:

public static void main(String args[]) {
  printtLongest ("VampireApi","C#-Api","Java Api");
}

public static void printtLongest(String ... strings){
     java.util.Arrays
      .stream(strings)
      .sorted(java.util.Comparator.comparingInt(String::length).reversed())
      .findFirst().ifPresent(System.out::println);
      
}

创建一个数组并将一个字符串输入到数组的每个部分(可以通过循环或手动添加- String[] st= new st String[]; 然后你可以: st[0]="aaa"; st[1]="eff"...之后你可以使用一个循环,它获取数组 [i] 中字符串的当前长度并使用变量 max(将从 0 开始)使用 Math.max() 函数保持最大长度。 如果长度(整数)大于最大值,则将字符串保存在字符串变量中,循环将遍历数组中的每个字符串,并在需要时更新最大值。在此之后,您可以 return 或打印最长的字符串。 这是许多方法之一。或者你可以做三个 if 来检查。此方法适用于大量字符串。

没有按照 OP 的要求使用 if-else,但更简洁的解决方案是:

void longest(String a, String b, String c) {
    String[] triplet = {a, b, c};
    Arrays.sort(triplet, Comparator.comparingInt(String::length));
    System.out.println(triplet[2]);
}