【问题标题】:How do I call a class into another with different parameters?如何使用不同的参数将一个类调用到另一个类中?
【发布时间】:2019-10-02 19:31:00
【问题描述】:

我不确定如何调用我的代码以使其与我的随机发生器相匹配。我的随机发生器基本上会在一个数组中生成一些随机整数并像这样打印它们。

编辑:如果我不清楚,我想将我的随机器调用到插入排序类的两个方法中!

我尝试使用从 geeks4geeks 获取的插入排序实现。它们都有参数 int[arr]。

这是我的代码

public class randomArr {

    public void randomizer(){
        Scanner sc = new Scanner(System.in);
        Random r = new Random();

        System.out.println("Please enter the amount of integers you want in your array: ");
        int n = sc.nextInt();
        // Create array of 1000 ints
        int[] intArr = new int[n];

// Fill array with random ints
        for ( int i = 0; i < intArr.length; i++) {
            intArr[i] = r.nextInt(100);
            System.out.print(intArr[i] + ", ");
        }

    }

}

这基本上是我想要发生的事情:

你可以看到我用我的“intArr”调用排序和打印数组。我如何用给定的方法调用我的方法?

我已经注释掉了我使用我的方法创建的对象,但是如果我将它留在里面,我将如何使用该对象来调用 sort() 和 printarray()?

public class insertionSort {
    public static void main(String[] args){
        //randomArr arry = new randomArr(); \\the object of my method
        //arry.randomizer());

        Scanner sc = new Scanner(System.in);
        Random r = new Random();

        System.out.println("Please enter the amount of integers you want in your array: ");
        int n = sc.nextInt();
        // Create array of 1000 ints
        int[] intArr = new int[n];

// Fill array with random ints
        for ( int i = 0; i < intArr.length; i++) {
            intArr[i] = r.nextInt(100);
            System.out.print(intArr[i] + ", ");
        }
        sort(intArr);
        printArray(intArr);
    }


        public static void sort(int arr[]){
            int n = arr.length;
            for (int i = 1; i < n; ++i) {
                int key = arr[i];
                int j = i - 1;

            /* Move elements of arr[0..i-1], that are
               greater than key, to one position ahead
               of their current position */
                while (j >= 0 && arr[j] > key) {
                    arr[j + 1] = arr[j];
                    j = j - 1;
                }
                arr[j + 1] = key;
            }
        }
        static void printArray(int arr[]){
            int n = arr.length;
            for (int i = 0; i < n; ++i)
                System.out.print(arr[i] + ", ");

            System.out.println();
        }
}

【问题讨论】:

  • 您的问题到底是什么?是要使用 randomArr 类中生成的 intArr 还是要在 insertSort 类中调用该类的 randomizer() 方法?
  • @MananAdhvaryu 我想将 randomizer() 方法调用到插入排序类中。抱歉,我不知道如何正确表达。我做了什么(我注释掉了)我如何使用 sort 方法和 insertSort 类中的 print 数组方法调用随机发生器?

标签: java arrays sorting random insertion-sort


【解决方案1】:

好的,如果您想将一个类的方法调用到另一个类中,您只需在该类的对象旁边添加方法名称并在其之间添加一个句点来调用它,就像这样(“object.method()” )。所以你要做的是:

import java.util.*;
class randomArr {

    public int[] randomizer()
    {
        Scanner sc = new Scanner(System.in);
        Random r = new Random();

        System.out.println("Please enter the amount of integers you want in your array: ");
        int n = sc.nextInt();
        // Create array of 1000 ints
        int[] intArr = new int[n];

// Fill array with random ints
        for ( int i = 0; i < intArr.length; i++) {
            intArr[i] = r.nextInt(100);
            System.out.print(intArr[i] + ", ");
        }

        return intArr;

    }

}

class Stack
{
    public static void main(String[] args) 
    {
        randomArr rArr = new randomArr();
        int[] intArr = rArr.randomizer();
    }
}

这样您就可以在其他类中创建该数组并在新类中使用它。

如果你想调用 insertSort 类的方法,你可以在没有对象的情况下调用它们,因为它们是静态的。您不能使用另一个类的对象来调用不​​属于该对象类的方法。

您可以通过在 randomArr 类中创建它的对象来使用 randomArr 类中的插入排序方法,反之亦然。但是一个对象只能访问它自己的类的方法。

【讨论】:

  • @Jordles 让我知道这是否是您想要的。如果您有任何疑问,我很乐意为您提供帮助。
  • 是的,我已经这样做了,我在上面的代码中将其注释掉了。问题是如何调用排序方法和打印数组?
  • @Jordles你想用“arry”对象调用insertionSort类的方法吗?
  • 是的,这就是我想说的 xD,等等,我不确定。我正在尝试使用随机化器并抓取该随机数组并将其放入 insertSort 类的方法中。这有意义吗?
  • 是的!非常感谢!我现在明白了。对于插入排序的方法,我的方法没有任何输出。如果我的方法已经是“返回 intArr”,我对为什么需要创建一个新数组(int [] intArr)并将其设置为我的随机器感到困惑。我不能做 sort(rArr.randomizer())
【解决方案2】:

您想在另一个类中调用方法,您可以创建该类的对象,然后使用对象引用您可以调用该类中可用的方法。

insertionSort object = new insertionSort();
object.sort(intArr);
object.printArray(intArr);

由于您定义 sort 和 printArry 是静态方法,您可以直接在您的 main 方法中调用它们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-19
    • 2021-05-07
    • 2021-05-21
    • 2021-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多