2016-08-20 2 views
1

В настоящее время я работаю над заданием для своего класса программирования Java. Кажется, я немного привязался. Любая помощь в том, чтобы помочь мне понять, что я делаю неправильно, будет очень признательна.Назначение школы Многомерная проблема с массивом

Назначение

Напишите программу, которая выполняет следующие действия:

Поместить данные ниже в многомерный массив

Запрашивает пользователь для компании, которую они хотели бы статистику работника заработной платы.

Напишите метод, который возвращает среднюю зарплату работника как двойную. Передайте номер компании и работнику Заработную плату по этому методу.

Напишите метод, который возвращает общую зарплату служащего как int. Передайте номер компании и работнику Заработную плату по этому методу.

Напишите способ, который возвращает количество сотрудников как int. Передайте номер компании и работнику Заработную плату по этому методу.

В основном методе вызывать другие методы и выставлять результаты.

Имейте в виду, что я все еще новичок и борюсь за понимание некоторых принципов программирования.

Когда я запускаю программу, я получаю местоположение вместо вычислений метода (плохой выход):

bad output

Вот то, что я до сих пор:

package salaries; 

import java.util.Scanner; 

public class Salaries { 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) { 

     //declare, instantiate, and define value of multi array [3] [12] 
     double [][] mSalary = { { 49920, 50831, 39430, 54697, 41751, 36110, 
           41928, 48460, 39714, 49271, 51713, 38903}, 
          { 45519, 47373, 36824, 51229, 36966, 40332, 
           53294, 44907, 36050, 51574, 39758, 53847}, 
          { 54619, 48339, 44260, 44390, 39732, 44073, 
           53308, 35459, 52448, 38364, 39990, 47373}}; 

     //declare, instantiate, and define value 
     //of single array for company names 
     //and output values to user for selection 
     String [] company = { "Alhermit", "Logway", "Felter" }; 
     for(int i = 0; i < company.length; i++) 
      System.out.println("Company " + i + " : " +company[i]); 

     Scanner scan = new Scanner(System.in); 
     int cCompany; 
     do{ 
      //ouput for user to select a company 
      System.out.print("Select company: (0)" +company[0]+ ", (1)" 
          +company[1]+ "; (2)" +company[2]+ " > "); 
      //scan user input into cCompany 
      cCompany = scan.nextInt(); 


      //call number method 
      num nums = new num(); 
      nums.number(mSalary, cCompany); 

      //call total method 
      total sum = new total(); 
      sum.total(mSalary, cCompany); 

      //call average method 
      avg cAvg = new avg(); 
      cAvg.average(mSalary, cCompany); 


      //output statistics to user on selected company 
      System.out.println("You have selected the company " + company[cCompany] + ". "); 
      System.out.println(company[cCompany] + " has " + nums + " of employees."); 
      System.out.println("A total employee salary of " + sum + "."); 
      System.out.println("The average employee salary is " + cAvg); 
     } 
      while(cCompany < 0 || cCompany > 2); 
    } 
} 

//total class to calculate 
//salary of user selected company 
class total { 

    public static int total(double [][] mSalary, int cCompany){ 

     //assign variables 
     int sum = 0; 

     //for loop to calculate salary total of user input company 
     for(int j = 0; j < mSalary[cCompany].length; j++){ 
      sum += mSalary[cCompany][j]; 

     } 

    //return statement 
    return sum; 
    } 
} 

//average class to calculate 
//average of user selected company 
class avg { 

    public static double average(double [][] mSalary, int cCompany){ 

     //assign variables 
     int cAvg = 0; 
     int sum = 0; 
     int count = 0; 

     //totals the values for the selected company by 
     //iterating through the array with count. 
     while(count < mSalary[cCompany].length){ 
      sum += mSalary[cCompany][count]; 
      count +=1; 
     } 

      cAvg = sum/mSalary[cCompany].length; 
      return cAvg; 
    } 
} 
//number class to calculate amount of 
//employees in user selected company 
class num { 

    public static int number(double [][] mSalary, int cCompany){ 

     //assign variables 
     int nums = 0; 

     //number of employees based on length of colomn 
     nums = mSalary[cCompany].length; 
     return nums; 
    } 
} 
+0

Вы ссылаетесь на изображение «плохой результат» (не используйте изображения, включайте в текст в свой вопрос), но вы не сказали, что такое «правильный вывод»; ни на каком этапе задания вы в настоящее время застряли. –

+0

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

ответ

1

nums, sum, и cAvg - все экземпляры классов, которые у вас есть, вы печатаете экземпляры этих классов.

(Кстати - вы должны изменить название этих классов Занятия начинаются с заглавной буквы Это отличает их от переменных...)

Есть две вещи неправильно с этим.

  1. Вы инстанцирование класса, который содержит нет данных и не имеет toString метода.
  2. Вы создаете экземпляр класса, у которого есть только статические методы для возврата данных. Вам не нужно создавать экземпляр класса на все; вместо этого просто распечатайте результат вызова метода.

Это было бы изменить, по крайней мере, один из этих вызовов к чему-то вроде:

System.out.println(company[cCompany] + " has " + num.number(mSalary, cCompany); + " of employees."); 

Я оставляю остальное в качестве упражнения для читателя.

+0

Спасибо за ваш ответ, он получил меня именно там, где я должен был быть. Я удалил ненужный код, чтобы создать экземпляр статических методов, и я заменил свой выходной оператор, чтобы отразить, как вы показали. Я также исправил проблему с именами классов, чтобы сделать их заглавными буквами. Все отлично работает. Ваш ответ был быстрым и огромной помощью. Спасибо!! – Cezpool

+0

После того, как я начал работать, я вернулся и удалил объявления трех классов и поместил свой код метода в основной класс, а затем изменил свой вывод, чтобы отразить это изменение. Меньше кода, меньше обработки и выглядит намного чище. – Cezpool

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