2012-10-30 3 views
-4

버블 정렬 클래스를 호출 할 때 실수가 있습니다. 그러나 나는 그것을 발견 할 수 없다. 이 확인을해야 내 거품 정렬 클래스입니다 :사용자 입력이있는 버블 정렬 = 오류

The method Sort2(double[]) in the type sort.java is not applicable for the arguments (int)

 System.out.println("Size"); 
     int yourNumbers = scan.nextInt(); 
     double[] array = new double[yourNumbers]; 

     System.out.println("Numbers"); 

     for(int i = 0; i < array.length; i++) { 
      System.out.println(array[i]); 
      array[i] = scan.nextDouble(); 

     } 
      Sort2(array); 

:

public static void Sort2(double[] yourNumbers) { 
     double swap; 
     for(int i = 0; i < yourNumbers.length-1; i++){ 
      for(int d = 0; d < yourNumbers.length-1; d++){ 
       if(yourNumbers[d] > yourNumbers[d+1]){ 
        //swap feature 
        swap = yourNumbers[d]; 
        yourNumbers[d] = yourNumbers[d+1]; 
        yourNumbers[d+1] = swap; 

       } 
      } 
     } 
    } 

이 내 주요 방법이다 (여기에 내가 오류를받은 Sort2 메서드를 호출 할 때 여기 몇 번이나 질문을 받았지만 제대로 할 수 없다고 생각합니다. 추 신 : ArrayList을 사용할 수 없습니다.

편집 :이 코드는 지금 사용됩니다. 스타일이 작동하지 않습니다 : 편집 2 :이 도움으로 http://www.leepoint.net/notes-java/data/arrays/70sorting.html 알았습니다. 한 줄은 오류가 당신이 argumentdouble[]을 받아들이는 방법에 int를 통과하지 못할 것을 말한다 모두에게

import java.util.Scanner; 

public class Bublesort{ 

    public static void main(String[] args) { 
     Scanner scan = new Scanner(System.in); 

     System.out.println("Size"); 
     int yourNumbers = scan.nextInt(); 
     double[] array = new double[yourNumbers]; 

     System.out.println("Numbers"); 

     for(int i = 0; i < array.length; i++) { 
      System.out.println(array[i]); 
      array[i] = scan.nextDouble(); 
     } 

     Sort2(array); 
    **System.out.println(Arrays.toString(array));** 

    } 
    public static void Sort2(double[] yourNumbers) { 
     double swap; 
     for(int i = 0; i < yourNumbers.length - 1; i++){ 
       for(int d = i + 1; d < yourNumbers.length; d++){ 
        if(yourNumbers[i] > yourNumbers[d]){ 
         //swap feature 
         swap = yourNumbers[i]; 
         yourNumbers[i] = yourNumbers[d]; 
         yourNumbers[d] = swap; 

        } 
       } 
      } 

    }} 
+1

? 나는 당신의'main()'메소드에서 호출되는 것을 보지 못했다. – Bernard

+1

Sort2 (yourNumbers) 대신 Sort2 (배열)를 호출하십시오. –

+0

예, Sort2 메소드를 추가했습니다. – johnmalc

답변

0

. 그것을 두배의 배열로 전달해야합니다. 또한, sort2 함수는 배열을 정렬하지만 java가 값으로 인수를 전달하기 때문에이를 참조 할 방법이 없습니다. 함수 double[] sort2(double[] array)을 가지고 정렬 된 배열을 반환해야합니다. 정렬 루틴의

+0

추신 : 배열 목록을 사용할 수 없습니다. – jlordo

+0

오, 당신은 ArrayList 클래스를 사용할 수 없다는 것을 의미합니다. 그건 당신이 모호한 부분이었고, 제 대답은 여전히 ​​당신을위한 해결책입니다. 아니 downvote 필요 ... – Joel

+0

하지만 당신은 참조 부분에 잘못이야! 참조의 값이 전달되므로 변경 사항이 원래 배열에 영향을줍니다! 완벽한 예 : Arrays.sort()는 무효 메서드입니다 ... – jlordo

0

를 해결합니다. 당신이 당신의 SORT2() 함수의 정수를 전달하기 때문에 오류를 얻고있다 java.util.ArrayList;를 가져와야합니다 ArrayList 사용하기 위해서는

System.out.println("Size"); 
     int yourNumbers = scan.nextInt(); 
     double[] array = new double[yourNumbers]; 

     System.out.println("Numbers"); 

     for(int i = 0; i < array.length; i++) { 
      System.out.println(array[i]); 
      array[i] = scan.nextDouble(); 
     } 

     sort2(array);//**should work fine** 
+0

이 해결책조차도 작동하지 않습니다. – johnmalc

+0

오류는 무엇을 말합니까 ?? 오류가 발생하는 곳에서 관련 코드를 게시 할 수 있습니까 ?? – PermGenError

0

더 나은 버전과 같이 보일 것입니다 : N의 * (N-1)/2 반복 대를 N^당신은`SORT2()`메소드를 호출하는 2

  for(int i = 0; i < yourNumbers.length - 1; i++){ 
      for(int d = i + 1; d < yourNumbers.length; d++){ 
       if(yourNumbers[i] > yourNumbers[d]){ 
        //swap feature 
        swap = yourNumbers[i]; 
        yourNumbers[i] = yourNumbers[d]; 
        yourNumbers[d] = swap; 

       } 
      } 
     }