2016-10-24 1 views
1

Я пытаюсь научить себя Java, и у меня чертовски время! :) Я только начал на днях, и я ударил немного дорожного блока.Я борюсь с методами ... особенно аргументы, которые вы передаете.

Я пытаюсь изучить массивы, но мои методы также любопытны.

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

Я просто пытаюсь вызвать свой последний метод и отобразить данные этого метода.

package test_arraymethods; 

import java.util.Scanner; 

public class TEST_arraymethods 
{ 

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

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

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

    //displayTotals(numberOfDealers, dealerNames, dealerSales, commissionRate); 
}//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: %n"); 
     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; 
     } 

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

     for(int i = 0; i < data; i++) 
     { 
      double sales = input.nextDouble(); 
      dealerSales[i] = sales; 
     } 
}//data calculations 

//METHOD 3 
public static double[] commission(double[] dealerSales) 
{ 
    //Create array 
    double[] commissionRate = new double[dealerSales.length]; 

    for(int i = 0; i < dealerSales.length; i++) 
    { 
      commissionRate[i] = dealerSales[i]; 

     if(commissionRate[i] > 0 && commissionRate[i] < 5000) 
      commissionRate[i] = commissionRate[i] * 0.08; 
     else if(commissionRate[i] > 5000 && commissionRate[i] < 15000) 
      commissionRate[i] = commissionRate[i] * 0.15; 
     else if(commissionRate[i] > 15000) 
      commissionRate[i] = commissionRate[i] * 0.20; 
    } 
    return commissionRate; 
}//commission method 

public static double[] dealershipSales(double[] dealerSales) 
{ 
    //Create array 
    double[] dealershipSalesTotal = new double[dealerSales.length]; 

    for(int i = 0; i < dealerSales.length; i++) 
    { 
     dealershipSalesTotal[i] += dealerSales[i]; 

    } 
    return dealershipSalesTotal; 
}//dealership sales 

public static double[] dealerSalesAvg(double[] dealerSales) 
{ 
    double[] dealerSalesAvgTotal = new double[dealerSales.length]; 

    for(int i = 0; i < dealerSales.length; i++) 
    { 
     dealerSalesAvgTotal[i] += dealerSales[i]/dealerSales.length; 
    } 

    return dealerSalesAvgTotal; 
}//dealership sales averages 

public static double[] dealershipTotalCommission(double[] commissionRate) 
{ 
    double[] totalCommission = new double[commissionRate.length]; 

    for(int i = 0; i < commissionRate.length; i++) 
    { 
      totalCommission[i] += commissionRate[i]; 
    } 
    return totalCommission; 
}//total commission for the dealership 

public static void displayTotals(double[] numberOfDealers, double[] dealerNames, double[] dealerSales, double[] commissionRate) 
{ 

    for(int i = 0; i < numberOfDealers.length; i++) 
    { 
     System.out.println(" " + dealerNames[i]); 
     System.out.println(" " + dealerSales[i]); 
     System.out.println(" " + commissionRate[i]); 
    } 


    // pass all of your values to this method and then display them 
    //display the dealer name and amount of sales 
    //and the amount of commission for all dealers in a tabular format. 

}//display totals */ 

}//class 
+0

Последний комментарий в моем основном - это то, что я собирался использовать для вызова моего метода отображения ... – duckHunter18

+0

Пожалуйста, объясните более четко, что ваша проблема; «это неправильно» не дает нам много работы. –

+0

перед кодированием попытайтесь понять основную концепцию программирования. Также у вас нет идеи о том, что такое программирование. Попытайтесь овладеть учителем или следовать некоторым учебникам. – Blip

ответ

0

Причина, по которой вы не можете получить эту работу:

displayTotals(numberOfDealers, dealerNames, dealerSales, commissionRate); 

является то, что он имеет в виду переменные, которые не входят в комплект. Эти переменные являются локальными переменными в методах, чьи вызовы завершены. Если вы хотите, чтобы переменные были доступны в другом методе, они должны быть объявлены как (статические, в данном случае) поля.

+0

Хорошо, я ценю это Стивен! Я все еще немного смущен ... простите меня, я только пару раз разговаривал с этим языком на пару ночей. Чтобы объявить их статическими, я бы просто создал новую переменную и установил ее равным методу, который мне нужен, а затем использовать эту переменную в качестве моего фактического параметра? – duckHunter18

+0

Вид. То, что вам действительно нужно сделать, - это ** переместить ** существующие объявления в область класса. Но, конечно, ваш учебник/книга объяснил вам концепцию поля ..... –

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