2016-03-13 5 views
3

Программа предназначена для добавления и среднего значения и количества раз, когда вызывается метод addNumber.Простые объекты и методы

я могу сделать Amount работу, но ничего другого

public class Main { 
    public static void main(String[] args) { 
     NumberStatistics stats = new NumberStatistics(); 
     stats.addNumber(3); 
     stats.addNumber(5); 
     stats.addNumber(1); 
     stats.addNumber(2); 
     System.out.println("Amount: " + stats.amountOfNumbers()); 
     System.out.println("sum: " + stats.sum()); 
     System.out.println("average: " + stats.average()); 
    } 

public class NumberStatistics { 
    private int amountOfNumbers; 
    private int addNumber; 
    private double average; 
    private int sum; 

public NumberStatistics() { 
    this.amountOfNumbers=amountOfNumbers; 
    this.average=0; 
    this.sum=0; 
} 

public void addNumber(int number) { 
    number=addNumber; 
    addNumber++; 
    // code here 
} 
public int amountOfNumbers() { 
    return addNumber; 
    // code , here 
} 
public int sum() { 
    return this.addNumber++; 
} 

public double average() { 
    return sum()/addNumber; 
} 

Мой некорректный вывод:

Сумма: 4 сумма: 4 средний: 0,0

+2

int/int всегда int in java –

+0

Целое подразделение! Ответ @FastSnail должен объяснить это вам. Но посмотрите и прочитайте об этом. – 3kings

+0

Обычно сумма - это когда вы добавляете все числа вместе. – Radiodef

ответ

2

Ok позволяет начать с конструктора.

public NumberStatistics() { 
this.amountOfNumbers=amountOfNumbers; 
this.average=0; 
this.sum=0;} 

Здесь при создании объекта инициализации среднего и просуммировать до 0, но this.amountOfNumbers = amountOfNumbers; не имеет особого эффекта. Подводя итог, что я думаю, что вы хотели сделать что-то вроде этого:

public NumberStatistics() 
{ 
    this.average = 0;//this keyword here is not needed but i used it since you did too 
    this.sum = 0; 
    this.amountOfNumbers = 0; 
} 

Тогда мы идем к этому блоку кода здесь:

public void addNumber(int number) { 
    number=addNumber; 
    addNumber++; 
} 

Хорошо, эта линия не имеет смысла, так как вы установив параметр равным переменной addNumber, которая является то, что не поможет вам на всех, то, что я думаю, что вы хотели сделать здесь следующее:

public void addNumber(int number) { 
    sum += number;//same as sum = sum + number; 
    amountOfNumbers++;//same as amountOfNumbers = amountOfNumbers +1; 
} 

Тогда вам нужен метод, который возвращает среднее, как это:

public double average() { 
    return average = sum/amountOfNumbers; //i use the average variable only because you did, 
    //the most efficient way here is just to return sum/amountOfNumbers 
} 

Наконец, последние два метода, которые я думаю, что вы пытаетесь создать следующие:

public int amountOfNumbers() { 
    return amountOfNumbers; 
} 

public int sum() { 
    return sum; 
} 

Это мой первый пост когда-либо, так что я надеюсь, что это помогает.

+0

это работает, однако результат среднего составляет 2 вместо 2.75. Я думаю, это потому, что это двойной. Я пытаюсь заставить его работать. – Nebular

+0

Я рад, что помог. Заметьте, что я не предоставил вам полное решение, я просто попытался помочь вам понять, почему ваш код не работал. – theVoid

1

В NumberStatistics, вам нужно только count и sum. Вы добавляете к sum с addNumber (и увеличивайте count). Что-то вроде,

public class NumberStatistics { 
    private int count = 0; 
    private int sum = 0; 

    public void addNumber(int number) { 
     this.sum += number; 
     count++; 
    } 

    public int getCount() { 
     return count; 
    } 

    public int sum() { 
     return sum; 
    } 

    public double average() { 
     return sum()/(double) getCount(); 
    } 
} 
Смежные вопросы