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

Java 从没有对象的另一个类调用方法,java,class,object,methods,call,Java,Class,Object,Methods,Call,我从数组中读取数字,然后使用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] >

我从数组中读取数字,然后使用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;
private静态void BubbleSort(int[]num){
for(int i=0;inum[x]){
int temp=num[x-1];
num[x-1]=num[x];
num[x]=温度;

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

int[] numbers = new int[10];  // Could be different size
// Populate it somehow.
BubbleSort.BubbleSort(numbers);
您的代码使用了
this
,它是对当前对象的引用,其类可能没有
BubbleSort
成员

另外,当前,您的方法是
私有的
,因此该类之外的任何对象都无法调用它。请改为将其设置为
公共的


此外,命名方法的常规Java约定规定第一个字母应该是小写的,即类
bubbleSort
的方法
bubbleSort
被声明为具有
int[]类型的参数
并具有访问修饰符
private
。您需要使用访问修饰符
public
声明它,并将
int[]
作为参数传递给它。创建一个
int[]array=new int[10]
,使用
for
循环添加一些数据,并调用
BubbleSort(array)


在java代码约定中,类名应以大写字母开头,函数名不应以大写字母开头。请查看链接页面:

因此,作为其他两个答案的组合,并指出您遇到的另一个问题

首先,调用
static
方法的语法是
ClassName.methodName()
,因此在本例中,您需要:

BubbleSort.BubbleSort(arguments);
其次,您的
BubbleSort()
方法接受一个参数,一个
int[]
。您需要传入该参数

第三,您的
BubbleSort()
方法声明为
private
,这意味着只能从
BubbleSort
类内调用它。如果您打算从
BubbleSort
类外调用此方法,则需要将该方法设置为public

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


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

我不断收到与以前相同的错误消息,告诉我无法从静态上下文引用非静态变量,并且无法找到变量BubbleSort。谢谢。BubbleSort方法无论如何都将是构造函数。a不管命名约定或语言定义如何,方法名与类名相同只会引起混淆。
BubbleSort.BubbleSort(arguments);