程序不会总是打印出最长的字符串

Program won't always print out the longest string

我在下面的代码中试图做的是让用户输入两个单独的字符串,我知道我使用了名字和姓氏,但忽略了它。所以用户输入两个字符串,它应该打印最长的字符串。 我的程序并不总是这样做。我需要更改什么才能使其正常工作?

import java.util.Scanner;

 public class Q2
  {

    public static void main(String args [])
    {
    Scanner keyboardIn = new Scanner(System.in);
    String Fname;
    String Lname;

    System.out.print("Please enter first name: ");
    Fname=keyboardIn.nextLine();

    System.out.print("Please enter last name: ");
    Lname=keyboardIn.nextLine();

  if(Fname.compareTo(Lname) < 0)
  {
     System.out.println(Lname + " Is longest ");
  }
  else if(Fname.compareTo(Lname) > 0)
  {
     System.out.println(Fname + " Is longest ");
  }
 }
}

这是错误的

if(Fname.compareTo(Lname) < 0)
  {
     System.out.println(Lname + " Is longest ");
  }

字符串有一个 length,这就是你需要用来比较 firstlastname 通过检查定义它的字符数

为什么这是错误的

Fname.compareTo(Lname)

因为结果没有考虑字符串的字符数

您比较的是字符串,而不是它们的长度。 您的代码应更改为:

  if(Fname.length() < LName.length())
  {
     System.out.println(Lname + " Is longest ");
  }
  else if(Fname.length() > LName.length())
  {
     System.out.println(Fname + " Is longest ");
  }

我建议也添加一个相等的案例,检查是否 Fname.length() == LName.length()

你应该使用长度

import java.util.Scanner;

public class Q2 {

    public static void main(String args[]) {
        Scanner keyboardIn = new Scanner(System.in);
        String Fname;
        String Lname;

        System.out.print("Please enter first name: ");
        Fname = keyboardIn.nextLine();

        System.out.print("Please enter last name: ");
        Lname = keyboardIn.nextLine();

        if (Lname.length() > Fname.length()) {
            System.out.println(Lname + " Is longest ");
        } else if (Fname.length() > Lname.length()) {
            System.out.println(Fname + " Is longest ");
        } else {
            // Both are of same length
        }
    }
}

Java compareTo() 方法按字典顺序比较字符串。我认为一个好方法是使用 length() 方法。见下方代码

if(Fname.length()<Lname.length())
{
   System.out.println(Lname + " Is longest ");
}
else 
{
   System.out.println(Fname + " Is longest ");
 }

我不确定当字符串长度相等时你想做什么。所以,请务必检查一下这种情况。

我建议不要使用 compareTo 方法,而是使用 length 方法。这使您可以更直接、更轻松地比较字符串长度。

以下面的语句为例:

if (Fname.length() > Lname.length()){
  System.out.println(Fname + " Is longest ");
}