2012-04-01 15 views
2

こんにちは私は数日間ソリューションに取り組んできましたが、私自身でそれを理解しようとしてきましたが、私はできません。リスト内の要素を比較し、それらをスワップします。 Java

私はArrayListを持っており、その中の要素を交換したいと思います。しかし、私は半分のリストを比較したい。リストに8つの要素がある場合は、リストの前半の最初の要素と後半の最初の要素を比較したいと思います。 リスト[4]で[0]をリストし、4が0より大きい場合は、スワップしてからi = 4になるまで0を1ずつ増やし、リストの半分を1ずつ増やしたい。 コマンドラインから実行します。

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

} 

これは私がこれまで持っているものですが、私はコマンドラインから実行すると、それだけで通常のリストを返し、私は完全に困惑します。私はむしろコレクションメソッドよりもむしろループを使用します。これはプログラミングのスタイルではないので、私は特に慣れ親しんでいます。

答えて

0

midPointを参照してください。ループ内で決して変更されません。 midPointでi番目の要素(if条件が真である場合)を継続的に交換しています。 midPoint以降の要素はこれまでに触れられていません。

+0

JavaにLINqはありますか? –

関連する問題