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

Java 查找数组中的最后10个元素,java,arrays,list,Java,Arrays,List,嘿,伙计们,所以我必须在我的.txt文件中找到数组中的最后10个元素,其中填充了未排序的素数。我遇到的问题是,我用来获取最后10个元素的代码只是返回相同的数字,而不是最后10个数字。如果有人能帮我弄明白,那就太好了 此外,我还查看了一些其他代码来找出它,但我没有运气。如果你回答了,请不要只回答与其他人代码的链接。谢谢 以下是我目前的代码: public class BubbleSort { static long BubbleSortCount = 0; public static void

嘿,伙计们,所以我必须在我的
.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;

}
}
公共类BubbleSort{
静态长气泡计数=0;
公共静态void main(字符串[]args)引发IOException{
System.out.print(“此程序比较气泡、选择、合并排序。\n”
+“数据集是78498个未排序的整数(素数小于1000000)\n\n”);
File File=新文件(“primes1.txt”);
扫描仪内嵌=新扫描仪(文件);
ArrayList Primes1=新的ArrayList();
内部温度;
漫长的开始时间,漫长的结束时间;
int n;
while(infle.hasNextInt()){
n=infle.nextInt();
Primes1.添加(n);
}
//泡泡
System.out.print(“气泡排序\n”);
System.out.println(“\n时间读取:”+Primes1.size());
startTime=System.currentTimeMillis();
Primes1=气泡(Primes1);
endTime=System.currentTimeMillis();
System.out.println(“已用秒数=”
+(双倍)((结束时间-开始时间)/1000.0);
System.out.println(“iterations=“+BubbleSortCount++”);
System.out.print(“前10个排序:”);
对于(int i=0;i<10;i++){
System.out.print(Primes1.get(i)+“”);
}
System.out.println();
System.out.print(“最后10个排序:”);
对于(int i=0;i<10;i++){
System.out.print(Primes1.get(Primes1.size()-1)+”;
}
}
//气泡排序法
公共静态ArrayList气泡(ArrayList Primes1){
内部温度;
对于(int i=0;i素数1.get(j+1)){
温度=Primes1.get(j);
素数1.set(j,素数1.get(j+1));
底漆1.套(j+1,温度);
}
}
}
返回素数1;
}
}
下面是我的.txt文件中的数字

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

对于1,它将始终采用相同的数字,应该是固定的

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

得到相同数字的原因是,您从未使用for循环中的索引来获得最后的10

这:

System.out.print(“最后10个排序:”);
对于(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) + " ");
}
System.out.print(“最后10个排序:”);
对于(int i=0;i<10;i++){
System.out.print(Primes1.get(Primes1.size()-10+i)+”);
}
另一种方法是使用List接口中的方法生成包含最后10个元素的新列表,如下所示:

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

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()-1)+”;
}
致:

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


用于(int i=1;i Out put应该看起来像这个冒泡排序的素数:25经过的秒数=0.001迭代次数=576前10个排序:27 11 13 17 19 23 29 31 37后10个排序:241 251 257 263 269 271 277 281 283 293请不要试图在评论中添加关于你的问题的细节,因此不是讨论板。而是你的问题添加信息。附带说明,
ArrayList
ArrayList
不同,因此问题的标题有点误导。嘿,伙计们,谢谢你们在这个问题上的帮助。我真的很感谢。谢谢你们的帮助。我真的很感谢。@Sabertooth_uuuuu很乐意帮忙。这里是我们的首选答案感谢并表明问题已经解决的一种方式是接受有帮助的答案,并可能对那些被认为有帮助的答案进行投票:)谢谢你的帮助。
List<Integer> last10list = Primes1.subList(Primes1.size() - 11, Primes1.size());
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) + " ");
}