2016-10-21 4 views
1

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

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

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

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

Спасибо ... заблаговременно.

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 
+0

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

ответ

1

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

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

Смежные вопросы