Передача массива другому методу и его копирование

#java #arrays #methods

#java #массивы #методы

Вопрос:

Я пытаюсь передать массив из одного метода в другой метод, а затем скопировать содержимое этого массива в новый массив. У меня возникли проблемы с синтаксисом для выполнения этой задачи. У кого-нибудь есть какой-нибудь справочный материал, который я мог бы прочитать по этой теме, или, может быть, полезный совет, который я мог бы применить?

Прошу прощения, если это вопрос новичка, но я возился с Java всего 3-4 недели неполный рабочий день.

Я знаю, что Java использует передачу по значению, но вот где я теряюсь … должен ли я вызвать sourceArray перед копированием его в targetArray?

Моя цель здесь не в том, чтобы просто получить ответ, мне нужно понять, ПОЧЕМУ.

Thanks…in продвигайтесь.

 package cit130mhmw08_laginess;

import java.util.Scanner;

public class CIT130MHMW08_Laginess 
{

public static void main(String[] args) 
{
    Scanner input = new Scanner(System.in);

    System.out.println("Please enter the total number of dealers: ");
    int numDealers = input.nextInt();
    numDealers = numberOfDealers(numDealers);

    System.out.printf("%nPlease enter the required data for each of your dealers:");
    dataCalculation(numDealers);

}//main

//METHOD 1
public static int numberOfDealers(int dealers)
{
    int results;

    Scanner input = new Scanner(System.in);

    while(dealers < 0 || dealers > 30)
    {
        System.out.printf("%nEnter a valid number of dealers: ");
        dealers = input.nextInt();  
    }
    results = dealers;
    return results;

}//number of dealers methods

//METHOD 2
public static void dataCalculation(int data)
{
    String[] dealerNames = new String[data];

    Scanner input = new Scanner(System.in);

    System.out.printf("%nEnter the names of the dealers:%n ");

        for(int i = 0; i < data; i  )
        {
            String names =input.nextLine();
            dealerNames[i]= names;
        }

    int[] dealerSales = new int[data];
    System.out.printf("%nEnter their sales totals: %n");

        for(int i = 0; i < data; i  )
        {
            int sales = input.nextInt();
            dealerSales[i] = sales;
        }


    for(int i = 0; i < data; i  )
    {
        System.out.println(" "   dealerNames[i]);
        System.out.println(" "   dealerSales[i]);
    }
    //gather the required input data. 
    //Perform the appropriate data validation here.

}//data calculations

//METHOD 3
public static int commission(int data)
{
    //Create array
    int[] commissionRate = new int[dealerSales]; 

    //Copy dealerSales array into commissionRate
    System.arraycopy(dealerSales, 0, commissionRate, 0, dealerSales.length);

    //calculate the commission array.
    //$1 - $5,000...8%
    //$5,001 to $15,000...15%
    //$15,001...20%

    //

}//commission method 
}//class
  

Комментарии:

1. Ваша программа выдала мне ошибку компиляции. Проблема с дилерскими продажами в commission() не может быть решена. Это связано с тем, что dealerSales недоступен во всем классе, поскольку он является переменной метода dataCalculation(), а не класса. Предлагалось бы объявить dealerSales закрытым членом класса.

Ответ №1:

Если вы хотите скопировать массив, вы можете использовать Arrays.copyOf(origin, length) метод. Он принимает 2 аргумента, первый из которых — это массив, из которого предполагается скопировать данные, а второй — длина нового массива, и импортирует java.util.Массивы.

-Смотрите ссылку для получения дополнительной информации https://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html#copyOf (int[], int)