2017-07-28 43 views
2

我在代码中试图做的是让用户输入两个独立的字符串,我知道我已经使用名字和姓氏,但只是忽略了这一点。所以用户输入两个字符串,它应该打印最长的字符串。 我的程序并不总是这样做。我需要改变以使其工作?程序不会总是打印出最长的字符串

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 "); 
    } 
} 
} 
+0

的'compare'方法不(仅)比较长。字符串有一个“长度”方法,它可以做你想要的。 – lucasvw

+1

当字符串的长度相等时,您还必须决定什么是预测结果。 –

+0

无关:阅读Java命名约定。变量名称为camelCase。 – GhostCat

回答

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

这是错误的

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

串具有长度,那就是你需要为了通过检查是字符的数量来比较第一姓氏使用什么定义它

为什么这是错的

Fname.compareTo(Lname) 

,因为结果没有考虑对字符串

+0

这不回答OP的问题。这应该是一个评论。 – lucasvw

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

+0

感谢大家为您提供的最佳答案。我意识到现在我不需要使用compareTo所有我需要使用的是.length()。感谢您的输入。 –

+0

@MarkDoherty很高兴帮助。请接受答案以表明您的问题已解决 –

0

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

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

我不知道你想要做什么时,字符串是相等的长度。所以,请确保您检查该案件。

+0

平等怎么样 –

+0

我在发布评论时正在输入关于它的内容。 – denis

0

而不是使用compareTo方法,我建议使用长度方法。这允许您直接比较字符串长度并且更容易。

使用以下语句为例:

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