试图对一组数字java进行排序

时间:2014-04-15 09:56:39

标签: java sorting vector syntax void

所以我试图用一个非常简单的算法对数组(或向量。在我的国家,它被称为向量,但是是)进行排序。语言是Java,我正在使用Eclipse。没什么好看的,我知道有更多有效的排序算法,但这不是我现在需要的。这是代码:

public void SortMethod(nbrs) {
int nbrs[];
int v[];

public void sort() {
    this.nbrs = nbrs;
    this.v=v;

    for (int i = 0; i < 10; i++) {
        int min = Integer.MIN_VALUE;
        int minIndex = -1;
        for (int k = i; k < 10; k++) {
            if (nbrs[k] < min) {
                min = nbrs[k];
                minIndex = k;
            }
        }
        v[minIndex] = v[i];
        v[i] = min;
    }
}

}

在我的另一个项目中:

public class Vector {
public static void main(String[] args) {
    int nbrs[] = {2, 4, 67, 40, 32, 28, 9, 8, 55, 72 };

    nbrs.sort();

    for(int j = 0; j<10; j++){
        System.out.println(nbrs[j]);
    }
}
}

在排序方法中,我在

的“void”部分出错
public void SortMethod(nbrs) {

在“void”处说@是预期的,并且“语法错误,插入Interface-identifier以完成InterfaceHeader。

我也在

收到错误
nbrs.sort();

在Vector类中。

感谢任何帮助。

4 个答案:

答案 0 :(得分:0)

对不起......你不能简单地在方法(这里,适当的,构造函数)签名中传递nbrs。你需要声明它是什么数据类型......

public class SortMethod {

    int[] nbrs;
    // ... the other fields.

    // This is a 'Constructor'
    public SortMethod (int[] nbrs) {
        this.nbrs = nbrs;
    }

接下来,在sort()调用中,您应该使用以下内容:

// ...
SortMethod sMethod = new SortMethod(nbrs);
sMethod.sort();
// ...

更合适的是,您可以创建一个对数组进行排序的static方法,这意味着不需要为简单的任务创建对象

public static void sort (int[] nbrs) {
    // ... code here.
}

你可以称之为:

// ...
<class_Name>.sort(nbrs); // from any where within the same package without an import.
// ...

提示:您可以尝试使用库方法实现:

// ...
java.util.Arrays.sort (nbrs);
// ...

答案 1 :(得分:0)

public void SortMethod需要更改为

public class SortMethod {

     //provide getters and setters for nbrs if required
     public void sort(int[] nbrs) {
        ...
     }
}

Vector类需要进行以下更改:

public class Vector {
public static void main(String[] args) {
    int nbrs[] = {2, 4, 67, 40, 32, 28, 9, 8, 55, 72 };

    SortMethod sortNumbers = new SortMethod();
    sortNumbers.sort(nbrs);

    for(int j = 0; j<10; j++){
        System.out.println(nbrs[j]);
    }
}
}

答案 2 :(得分:0)

稍微改写了一下你的代码,所以它确实有效:

public class SortMethod {
    public static void sort(int[] nbrs) {
        for (int i = 0; i < 10; i++) {
            int min = Integer.MAX_VALUE;
            int minIndex = -1;
            for (int k = i; k < 10; k++) {
                if (nbrs[k] < min) {
                    min = nbrs[k];
                    minIndex = k;
                }
            }
            nbrs[minIndex] = nbrs[i];
            nbrs[i] = min;
        }
    }
}

public class Vector {
    public static void main(String[] args) {
        int nbrs[] = { 2, 4, 67, 40, 32, 28, 9, 8, 55, 72 };

        SortMethod.sort(nbrs);

        for (int j = 0; j < 10; j++) {
            System.out.println(nbrs[j]);
        }
    }
}

答案 3 :(得分:0)

使用此

    import java.util.Arrays;

    Arrays.sort(nbrs);
System.out.println(Arrays.toString(nbrs));