簡體   English   中英

為什么我的程序在打印出我的 letterList 數組時會跳過數字? 它只是打印出 AZ 和 az

[英]Why does my program skip over digits when printing out my letterList array? It is only printing out A-Z and a-z

public static void main(String[] args) {
    ArrayList<Integer> numberList = new ArrayList<>();
    numberList.add(1);
    numberList.add(5);
    numberList.add(3);
    numberList.add(4);
    ArrayList<String> letterList = new ArrayList<>();
    letterList.add("a");
    letterList.add("9");
    letterList.add("c");
    letterList.add("F");

    for (int x = 0; x < letterList.size(); x++) {
        String combo = letterList.get(x);
        String letter = combo.replaceAll("[^A-Za-z]", "");
        letterList.set(x, letter);
    }
    bubbleSort(numberList, letterList);
}

public static void bubbleSort(ArrayList<Integer> numberList, ArrayList<String> letterList) {
    int n = numberList.size();
    int temp = 0;
    String temp2 = null;

    for (int i = 0; i < n; i++) {
        for (int j = 1; j < (n - i); j++) {

            if (numberList.get(j - 1) > numberList.get(j)) {
                temp = numberList.get(j - 1);
                temp2 = letterList.get(j - 1);
                numberList.set(j - 1, numberList.get(j));
                letterList.set(j - 1, letterList.get(j));
                numberList.set(j, temp);
                letterList.set(j, temp2);
            }

        }
    }
    System.out.println(letterList);
}

它應該通過關閉 numberList 的排序方式對 numberList 和 letterList 進行排序

例如數組 {1,5,3,4} 和數組 {a,9,c,F} 應該將第一個排序為 {1,3,4,5},將第二個排序為 {a,c, F,9}。 但是,當我嘗試打印出 letterList 時,它會跳過應該在數組中的任何數字。 請看看您是否可以提供幫助,抱歉格式化我不知道如何插入代碼。

在這個循環中

for (int x = 0; x < letterList.size(); x++) {
    String combo = letterList.get(x);
    String letter = combo.replaceAll("[^A-Za-z]", "");
    letterList.set(x, letter);
}

您用空字符串替換字母列表中的任何數字。

如果您不想這樣做,只需刪除整個 for 循環。

編輯:

如果您需要過濾由空格分隔的條目,請執行以下操作:

String myStr; //populate this value with your raw string
String[] mySplit = myStr.split(" "); //split it into an array around spaces
numberList.add(Integer.parse(mySplit[0]));
letterList.add(mySplit[1]);

請注意,這假定您的輸入將始終按照您描述的格式進行格式化,即一個數字后跟一個由一個空格分隔的字符串。

暫無
暫無

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

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