Как мне вызвать класс в другой с другими параметрами? - PullRequest
0 голосов
/ 02 октября 2019

Я не уверен, как мне вызвать мой код, чтобы он соответствовал моему рандомизатору. Мой рандомизатор в основном генерирует несколько случайных целых чисел в массиве и печатает их так.

Редактировать: Если мне неясно, я хочу вызвать мой рандомизатор для обоих методов класса сортировки вставки!

Я пытался использовать реализацию сортировки вставкойя взял от 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();
        }
}

Ответы [ 2 ]

0 голосов
/ 02 октября 2019

вы хотите вызвать метод в другом классе, вы можете создать объект этого класса, а затем, используя ссылку на объект, вы можете вызвать доступные методы из этого класса.

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

Поскольку вы определили sort и printArry,статические методы, вы можете напрямую вызывать их в вашем основном методе.

0 голосов
/ 02 октября 2019

Хорошо, если вы хотите вызвать метод одного класса в другой, вам просто нужно вызвать его, добавив имя метода рядом с объектом этого класса с точкой между ними, например так («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();
    }
}

таким образом вы можете создать этот массив в другом классе и использовать его в своем новом классе.

Если вы хотите вызывать методы inserttionSortКласс вы можете вызывать их без объекта, так как они являются статическими. Вы не можете использовать объект другого класса для вызова метода, не принадлежащего классу этого объекта.

Вы можете использовать методы inserttionSort в классе randomArr, создав его объект в классе randomArr и наоборот. Но объект может получить доступ только к методам своего класса.

...