![](/img/trans.png)
[英]How to sort strings regardless of capitalization without an array java
[英]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.