java - 为什么我的程序在打印 letterList 数组时会跳过数字?它只打印出 A-Z 和 a-z

标签 java arrays sorting bubble-sort

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]);

请注意,这假设您的输入始终采用您所描述的格式,即一个数字后跟一个由一个空格分隔的字符串。

关于java - 为什么我的程序在打印 letterList 数组时会跳过数字?它只打印出 A-Z 和 a-z,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36949141/

相关文章:

java - 使用 json-simple 解码 JSON 时出现问题

C 中动态数组与 & * 和 [] () 混淆

php - 将数组插入 mysql 表(结果仅为零)

c# - 使用 DateTime 对 C# ArrayList 进行排序

JavaFX Tableview,场景生成器 : putting my TableView in a secondary window

java - 按值对 Map<Key, Value> 进行排序

javascript - 如何使用 javascript/jQuery 检查数组中的所有项目是否匹配

javascript - 如何对包含日期和值的数组进行排序?

iphone - 排序数组不会删除我想要的

java - 使用两个线程顺序打印奇偶数