查找数组中的最后10个元素

时间:2016-10-01 20:26:35

标签: java arrays list

嘿伙计们,所以我必须在我的.txt文件中找到填充了未分类素数的数组中的最后10个元素。我遇到的问题是我用来获取最后10个元素的代码只返回相同的数字而不是最后的10个数字。如果有人能帮助我弄清楚这会很棒。

我也看了一些其他代码来弄明白,但我没有运气。如果您确实回答,请不要回答其他人代码的链接。感谢

到目前为止我的代码:

public class BubbleSort {

static long BubbleSortCount = 0;

public static void main(String[] args) throws IOException {

    System.out.print("This program compares the bubble, selection, merge sorts.\n"
            + "The data set is 78498 unsorted integers (prime numbers less than 1,000,000)\n\n");

    File file = new File("primes1.txt");

    Scanner infile = new Scanner(file);

    ArrayList<Integer> Primes1 = new ArrayList<Integer>();

    int temp;

    long startTime, endTime;

    int n;

    while (infile.hasNextInt()) {

        n = infile.nextInt();

        Primes1.add(n);

    }

    // bubble
    System.out.print("BUBBLE SORT\n");

    System.out.println("\nPrimes Read : " + Primes1.size());

    startTime = System.currentTimeMillis();

    Primes1 = Bubble(Primes1);

    endTime = System.currentTimeMillis();

    System.out.println("Elapsed Seconds = "

            + (double) ((endTime - startTime) / 1000.0));

    System.out.println("iterations = " + BubbleSortCount++);

    System.out.print("First 10 sorted : ");

    for (int i = 0; i < 10; i++) {

        System.out.print(Primes1.get(i) + " ");
    }
    System.out.println();

    System.out.print("Last 10 sorted : ");

    for (int i = 0; i < 10; i++) {

        System.out.print(Primes1.get(Primes1.size() - 1) + " ");
    }

}

// Bubble sort Method

public static ArrayList<Integer> Bubble(ArrayList<Integer> Primes1) {

    int temp;

    for (int i = 0; i < Primes1.size() - 1; i++) {

        for (int j = 0; j < Primes1.size() - 1; j++) {
            BubbleSortCount++;

            if (Primes1.get(j) > Primes1.get(j + 1)) {

                temp = Primes1.get(j);

                Primes1.set(j, Primes1.get(j + 1));

                Primes1.set(j + 1, temp);

            }

        }

    }

    return Primes1;

}
}

以下是我的.txt文件中的数字。

  

7   2   47   13   11   59   17   41   37   23   29   31   19   53   43   241   251   257   263   269   271   277   281   283   293

3 个答案:

答案 0 :(得分:0)

    System.out.print(Primes1.get(Primes1.size() - 1) + " ");

使用1将始终采用相同的数字,应该修复

    System.out.print(Primes1.get(Primes1.size() - i) + " ");

答案 1 :(得分:0)

你获得相同数字的原因是你永远不会使用for循环中的索引来获得最后的数字。

此:

System.out.print("Last 10 sorted : ");    
for (int i = 0; i < 10; i++) {    
  System.out.print(Primes1.get(Primes1.size() - 1) + " ");
}
必须更改

才能使用循环索引变量。这应该这样做:

System.out.print("Last 10 sorted : ");
for (int i = 0; i < 10; i++) {
  System.out.print(Primes1.get(Primes1.size() - 10 + i) + " ");
}

另一种方法是使用 List 界面中的sublist方法生成一个包含10个最后元素的新列表,如下所示:

List<Integer> last10list = Primes1.subList(Primes1.size() - 11, Primes1.size());

答案 2 :(得分:0)

变化:

for (int i = 0; i < 10; i++) {
    System.out.print(Primes1.get(Primes1.size() - 1) + " ");
}

要:

for (int i = 0; i < 10; i++) {

    System.out.print(Primes1.get(Primes1.size() - (i+1)) + " ");
}

或者:

for (int i = 1; i <= 10; i++) {

    System.out.print(Primes1.get(Primes1.size() - i) + " ");
}