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

时间:2017-07-28 19:39:07

标签: java jgrasp

我在下面的代码中尝试做的是让用户输入两个单独的字符串我知道我使用了名字和姓氏但忽略了这一点。因此用户输入两个字符串,它应该打印最长的字符串。 我的程序并不总是这样做。我需要改变什么才能使它发挥作用?

dict

5 个答案:

答案 0 :(得分:3)

你应该使用长度

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
        }
    }
}

答案 1 :(得分:0)

这是错误的

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

字符串长度,这是您需要使用的,以便通过检查字符数来比较 first lastname 正在定义它

为什么这是错误的

Fname.compareTo(Lname)

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

答案 2 :(得分:0)

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

  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()

答案 3 :(得分:0)

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

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

当字符串长度相等时,我不确定你想做什么。所以,请确保检查那个案例。

答案 4 :(得分:0)

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

使用以下语句作为示例:

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