试图按字母顺序排列城市。不工作,我是java的新手

时间:2015-03-01 03:09:38

标签: java

我试图让扫描仪扫描每个城市,分析第一个字符并按字母顺序排列。我无法弄清楚如何使用for语句完成这项任务,而且我已经搜索了很多,但现在我认为这将是正确的选择。除非If Else即使在正确的条件下也能正常工作,否则它仍会运行。如果我可以使用For()我将如何使用它,如果不能,我怎么能让它工作。

对于我使用的样本城市" Austin [enter] Chicago [Enter] Denver [Enter]"。

编辑:让我澄清一下,我添加了"错误"测试If参数的其他部分。

package homework2;

    import java.util.Scanner;

    public class OrderCities {

public static void main(String[] args) {
    // Create a scanner
    Scanner scanner = new Scanner(System.in);

    // Prompt user to input cities
    System.out.println("Please enter each city");
    String c1 = scanner.nextLine();
    String c2 = scanner.nextLine();
    String c3 = scanner.nextLine();

    int first = 0;
    int i1 = c1.charAt(first);
    int i2 = c2.charAt(first);
    int i3 = c3.charAt(first);

    if ((i1 > i2 && i1 > i3) && i2 > i3){
        System.out.println(c1 + " " + c2 + " " + c3);
    } else
        System.out.println("Error");



        }

    }

所以我的教授告诉我,我已经纠正了它,并且发现[大于,小于]的符号应该被交换,因为程序用Unicode读取它们。他补充说System.out.println(i1 + " " + i2 + " " + i3);  在 int i2 = c2.charAt(first); int i3 = c3.charAt(first); System.out.println(i1 + " " + i2 + " " + i3);

if (i1 < i2 && i1 < i3){
    if (i2 < i3){
        System.out.println(c1 + ", " + c2 + ", " + c3);` 

让它读出Unicode。谢谢大家的帮助!这是我的原始代码出现的内容(这仅适用于文档,因为像我这样的其他初学者也有类似的问题):

`package homework2;

        import java.util.Scanner;

        public class OrderCities {

    public static void main(String[] args) {
        // Create a scanner
        Scanner scanner = new Scanner(System.in);

        // Prompt user to input cities
        System.out.println("Please enter each city");
        String c1 = scanner.nextLine();
        String c2 = scanner.nextLine();
        String c3 = scanner.nextLine();

        int first = 0;
        int i1 = c1.charAt(first);
        int i2 = c2.charAt(first);
        int i3 = c3.charAt(first);
        System.out.println(i1 + " " + i2 + " " + i3);

        if (i1 < i2 && i1 < i3){
            if (i2 < i3){
                System.out.println(c1 + ", " + c2 + ", " + c3);
            }else
                System.out.println(c1 + ", " + c3 + ", " + c2);
        } else if (i2 < i1 && i2 < i3){
            if (i1 < i3){
                System.out.println(c2 + ", " + c1 + ", " + c3);
            }else
                System.out.println(c2 + ", " + c3 + ", " + c1);
       } else if (i3 < i1 && i3 < i2){
            if (i2 < i1){
                System.out.println(c3 + ", " + c2 + ", " + c1);
            }else
                System.out.println(c3 + ", " + c1 + ", " + c2);
        } else
            System.out.println("ROFLOL, there seems to be an 3RR0R, which means you somehow found a way to break my code!! TR0LL0L0L0L0L");
            }





}

3 个答案:

答案 0 :(得分:2)

这应该包含您需要的一切:How can I sort a List alphabetically?

没有必要拉第一个字符进行比较。 Java的集合可以完成这项工作。

(将字符串放入new ArrayList<String>();或任何其他集合。)

答案 1 :(得分:0)

我喜欢你的第一种方法,我所看到的唯一让你比你需要的更难的是如何检查扫描仪所有输入的第一个字母(如果两个城市有相同的第一个字母, UH-OH)。

您的第二种方法更好,因为您使用List(ArrayList是一个很好的选择)来收集输入,而您似乎正在尝试根据列表的内容对其进行排序。 知道Java有内置类可以对某些类型的列表进行操作是一件好事(javadoc是一个很棒的工具)。查看作业所需的技能水平,我怀疑你需要同步任何,更不用说列表。

查看Collections课程,让它在您的城市列表上执行必要的操作。答案是在javadoc,我不想放弃太多;)

答案 2 :(得分:0)

使用Array.sort(yourArray),它将按字母顺序返回yourArray