【问题标题】:Comparing elements in a list and swapping them. Java比较列表中的元素并交换它们。爪哇
【发布时间】:2012-04-01 00:02:47
【问题描述】:

您好,我已经研究了几天的解决方案,我一直在尝试自己解决,但我就是做不到。

我有一个 ArrayList,我想交换其中的元素。但我想将列表分成两半。所以说如果列表中有 8 个元素,我想将列表前半部分的第一个元素与列表后半部分的第一个元素进行比较。 所以 list[0] 和 list[4] 如果 4 大于 0,我想交换它们,然后我想增加 0 和 1,并将列表的一半增加 1,直到 i = 4。 我必须从命令行运行它。

 import java.util.Arrays;
 import java.util.ArrayList;
 import java.util.Scanner; 
import java.util.Collections;

public class TennisTournament {
     public static void main (String [] args) {
    Scanner input = new Scanner(System.in);
    ArrayList <Integer> nums = new ArrayList<Integer>();
    while (input.hasNextInt()) {
      nums.add(input.nextInt());
    }
    tournament(nums);   }
     public static void tournament(ArrayList <Integer> list) {
    int midPoint = list.size()/2; // returns the index number of half of the lists size
    for (int i = 0; i < midPoint; i++) { // while is bigger than mid point, increment by one
      if (list.get(i) < list.get(midPoint)) {
          Collections.swap(list, i, midPoint);
          System.out.print(list);
      }
    }
    System.out.println(list);   }

}

这是我目前所拥有的,但是当我从命令行运行它时,它只是返回一个普通的列表,我完全被难住了。我更愿意使用循环而不是集合方法,因为它不是我特别熟悉的一种编程风格。

【问题讨论】:

    标签: java arraylist compare swap


    【解决方案1】:

    看看midPoint - 它在循环内永远不会改变。您不断地与midPoint 交换第 i 个元素(前提是“如果”条件为真)。 midPoint 之后的任何元素都不会被触及。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多