从没有对象的另一个类调用方法

时间:2013-12-05 00:52:54

标签: java class object methods call

我正在从数组中读取数字,然后使用我的BubbleSort类对数组中的数字进行排序。我正在努力让我对BubbleSort课程的调用起作用。


  //Attempted call from the main class to the BubbleSort method in the BubbleSort class

        System.out.println(this.BubbleSort.BubbleSort());

// BubbleSort类

package main;

公共类BubbleSort {

private static void BubbleSort(int[] num) {
    for (int i = 0; i < num.length; i++) {
        for (int x = 1; x < num.length - i; x++) {
            if (num[x - 1] > num[x]) {
                int temp = num[x - 1];
                num[x - 1] = num[x];
                num[x] = temp;

3 个答案:

答案 0 :(得分:0)

调用static方法的语法是ClassName.methodName(args)。尝试:

int[] numbers = new int[10];  // Could be different size
// Populate it somehow.
BubbleSort.BubbleSort(numbers);

您的代码使用this,它是对当前对象的引用,其类可能没有BubbleSort成员。

此外,目前,您的方法是private,因此该类之外的任何内容都无法调用它。改为public

此外,命名方法的常规Java约定规定第一个字母应为小写,即类bubbleSort的方法BubbleSort

答案 1 :(得分:0)

声明

BubbleSort的参数类型为int[],并且具有访问修饰符private。您需要使用访问修饰符public声明它并将int[]作为参数传递给它。创建int[] array = new int[10],使用for循环添加一些数据并调用BubbleSort(array)

在java代码约定中,类名应以大写字母开头,函数名不应该。请查看链接的页面:Code Conventions for the Java TM Programming Language

答案 2 :(得分:0)

所以,作为另外两个答案的组合加上指出你有另一个问题......

首先,调用static方法的语法是ClassName.methodName(),因此在这种情况下,您需要:

BubbleSort.BubbleSort(arguments);

其次,您的BubbleSort()方法采用参数int[]。你需要传递它。

第三,您的BubbleSort()方法被声明为private,这意味着它只能在BubbleSort类中调用。如果您打算在BubbleSort课程外部调用此方法,则需要制作方法public

最后,BubbleSort()返回voidSystem.out.println(BubbleSort.BubbleSort(intArray))真的没有多大意义。它将调用该方法(当您修复所有其他问题时)并假设方法正确,进行冒泡排序。它将打印一行......但该行将为空白。因此,如果您打算打印某些内容,则需要将返回类型更改为String并返回要打印的字符串。否则,将它放在System.out.println()内是更有意义的。

另外......请遵循标准命名约定。方法名称应以小写字母开头,并且可能不应与包含它们的类名称相同(特别是在Java中,它将被混淆为构造函数。