询问用户三个名字并按字母顺序打印

Har*_*vey 0 java string-comparison

从文本引用引用:"编写一个程序,要求用户输入三个名称,然后显示按升序排序的名称.例如,如果用户输入"查理","莱斯利和"安迪",程序会显示

Andy 
Charlie 
Leslie 
Run Code Online (Sandbox Code Playgroud)

我的教授特别说我们不允许使用循环或数组,因为我们没有在课堂上介绍过.我一直在尝试使用该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);
        }
  }     

}
Run Code Online (Sandbox Code Playgroud)

Bar*_*nka 6

既然你已经发布了代码,我会给你一些帮助你的想法.

首先,尝试在纸上做一些例子,并找出你想要做的事情的逻辑.努力思考计算机必须做什么.

  • 如果需要交换两个名称,您的程序将如何知道?
  • 你的程序将如何交换它们?

重要. 在阅读我在线下面写的内容之前,先在纸上做例子.两三个好的和诚实的例子将帮助您理解需要做什么.




好的,现在你知道怎么做了,至少在纸上.现在,让我们编码吧.

你有三个字符串,你需要比较它们并相应地对它们进行排序.让我们使用您的示例值:

String name1, name2, name3;
name1 = "Charlie";
name2 = "Leslie";
name3 = "Andy";
Run Code Online (Sandbox Code Playgroud)

为了简单起见,有一条规则:你不能简单地"交换"价值观.您需要一个临时变量来保存您正在交换的值:

String temp;
Run Code Online (Sandbox Code Playgroud)

现在,比较.我要解决这个问题的方法是将第一个名称与第二个和第三个名称进行比较,并进行必要的交换:

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"
 */
Run Code Online (Sandbox Code Playgroud)

这样,您将确保保持三个值中的最小值name1.现在,比较name2name3,并在必要时交换它们:

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"
 */
Run Code Online (Sandbox Code Playgroud)

你完成了.

重要.在编写此代码之前.理解它.引用这十条诫命:

你不能复制和粘贴其他人的代码,至少不要试图理解它的作用.


一些个人提示:

如果你想问一个问题,一定要诚实.你需要付出一些努力,并表现出努力.引自http://whathaveyoutried.com:

这是关键的实现.当你被问到"你有什么尝试?"时,这并不意味着"告诉我你写的代码,或者小便".你要做的就是至少试着帮助自己 - 尝试是重要的事情.

因此,下次当你考虑提出一个问题时,当你被问到"你有什么尝试?"时,你最好准备一个令人信服的答案.

如果你的答案相当于"不是很多",请接受我的说法:你回答的下一个问题是"那我为什么要帮你?"