引用文中的引用:“编写一个程序,要求用户输入三个名字,然后按升序排列显示这些名字。例如,如果用户输入“Charlie”、“Leslie”和“Andy” ",程序会显示
Andy
Charlie
Leslie
我的教授特别说我们不允许使用循环或数组,因为我们在类里面没有介绍过。我一直在尝试使用 compareTo
方法,但似乎无法让它与两个以上的字符串变量一起运行。
public class SortedNames {
public static void main(String[] args) {
//Declare Variables
String name1;
String name2;
String name3;
//Accept User Imput
Scanner keyboard=new Scanner(System.in);
System.out.print("Please Enter First Name ");
name1=keyboard.nextLine();
System.out.print("Please Enter Second Name ");
name2=keyboard.nextLine();
System.out.print("Please Enter Third Name ");
name3=keyboard.nextLine();
//Compare
if((name2.compareToIgnoreCase(name1)<0)&&(name2.compareToIgnoreCase(name3)<0))
{
System.out.println(name2);
}
//Compare
if((name1.compareToIgnoreCase(name2)<0)&&(name1.compareToIgnoreCase(name3)<0))
{
System.out.println(name1);
}
//Compare
if((name3.compareToIgnoreCase(name1)<0)&&(name3.compareToIgnoreCase(name2)<0))
{
System.out.println(name3);
}
}
}
最佳答案
您有三个字符串,您需要比较它们并相应地对它们进行排序。让我们使用您的示例值:
String name1, name2, name3;
name1 = "Charlie";
name2 = "Leslie";
name3 = "Andy";
为了简单起见,有一条规则:您不能简单地“交换”值。您需要一个临时变量来保存要交换的值:
String temp;
现在,进行比较。我解决这个问题的方法是将第一个名字与第二个和第三个名字进行比较,并进行必要的交换:
if(name1.compareTo(name2) > 0) { // "Charlie" > "Leslie" (this won't happen)
temp = name1; // temp = "Charlie"
name1 = name2; // name1 = "Leslie"
name2 = temp; // name2 = "Charlie"
}
if(name1.compareTo(name3) > 0) { // "Charlie" > "Andy" (this will happen)
temp = name1; // temp = "Charlie"
name1 = name3; // name1 = "Andy"
name3 = temp; // name3 = "Charlie"
}
/*
* Up to this point:
* name1 = "Andy"; name2 = "Leslie"; name3 = "Charlie"
*/
这样,您将确保 name1
中保存三个值中的最小值。现在,比较 name2
和 name3
,并在必要时交换它们:
if(name2.compareTo(name3) > 0) { // "Leslie" > "Charlie" (this will happen)
temp = name2; // temp = "Leslie"
name2 = name3; // name2 = "Charlie"
name3 = temp; // name3 = "Leslie"
}
/*
* Up to this point:
* name1 = "Andy"; name2 = "Charlie"; name3 = "Leslie"
*/
你就完成了。
关于java - 询问用户三个名字并按字母顺序打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19190297/