程序不会总是打印出最长的字符串
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,这就是你需要用来比较 first 和 lastname 通过检查定义它的字符数
为什么这是错误的
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 ");
}
我在下面的代码中试图做的是让用户输入两个单独的字符串,我知道我使用了名字和姓氏,但忽略了它。所以用户输入两个字符串,它应该打印最长的字符串。 我的程序并不总是这样做。我需要更改什么才能使其正常工作?
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,这就是你需要用来比较 first 和 lastname 通过检查定义它的字符数
为什么这是错误的
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 ");
}