簡體   English   中英

如何排序忽略大小寫的數組?

[英]How do I sort an array ignoring capitalization?

我使用sort()按字母順序對數組進行排序,但是這樣做是從AZ到az。 我嘗試將每個單詞預先大寫,但是除非將其打印出來,否則它不起作用,這應該在排序之后進行。 目前,使用此代碼,它將以大寫字母列出學生,但是如果輸入為小寫,則將其排序為小寫。 在將輸入分配給數組之后,將大寫()放入初始for循環中不起作用。 有什么辦法嗎?

import java.util.Scanner;
import java.util.Arrays;

public class Pupils {
public static void main(String[] args) {

    Scanner scan = new Scanner(System.in);
    boolean loop = true;
    int names = 0;

    String[] ay = new String[1000];

    for(int i = 0; loop == true; i++) {
            System.out.println("Enter name: ");
            ay[i] = scan.nextLine();
            names++;
            if (ay[i].equals("0")) {
                loop = false;
                ay[i] = " ";
        }
    }

    String[] aay = new String[names - 1];

    for(int i = 0; i < aay.length; i++) {
        aay[i] = ay[i];
    }

    if (names == 1) {
        System.out.print("There are no people in our class.");
    } else if (names == 2) {
        System.out.print("The person in our class is ");
    } else {
        System.out.print("The people in our class are ");
}
    Arrays.sort(aay);
    for(int i = 0; i < names - 1; i++) {
        if(i == names - 2) {
            System.out.print(capitalize(aay[i]) + ".");
        } else if (i == names - 3) {
            System.out.print(capitalize(aay[i]) + " and ");
        } else {
            System.out.print(capitalize(aay[i]) + ", ");
        }
    }

}
public static String capitalize(String line)
{
  return Character.toUpperCase(line.charAt(0)) + line.substring(1);
}

}

如何將Arrays.sort()與Comparator一起使用 請注意, String定義了一個合適的比較器 ,因此:

Arrays.sort(aay, String.CASE_INSENSITIVE_ORDER);

應該做的工作。

我建議將所有數據以小寫形式存儲在數組中。 它將簡化排序和搜索(如果您在數組中搜索學生,並且輸入的名稱是“ Walter”,而您正在尋找“ Walter”,則不會找到它。如果同時使用小寫字母用於存儲和搜索,它將起作用。

並且由於您仍然使用大寫的名稱進行打印,因此名稱仍將顯示為大寫。

所以不要做

        ay[i] = scan.nextLine();

你可以做:

        ay[i] = scan.nextLine().toLowerCase();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM