-3

I have a get/set program, and I'm trying to get the average result, but I always get 0.0 instead.

  • The program has 5 instances, and 1 return method for each
  • The main has 2 user input, and 3 grade numbers

Account class:

public class Account {
    private String name1;
    private String name2;
    private double grade1;
    private double grade2;
    private double grade3;
    private double average;

    public Account(String a1, String a2, double b1, double b2, double b3) {
        name1 = a1;
        name2 = a2;
        grade1 = b1;
        grade2 = b2;
        grade3 = b3;
    }

    public void setName1(String a1) {
        name1 = a1;
    }

    public void setName2(String a2) {
        name2 = a2;
    }

    public void setGread1(double b1) {
        grade1 = b1;
    }

    public void setGread2(double b2) {
        grade2 = b2;
    }

    public void setGread3(double b3) {
        grade3 = b3;
    }

    public String getName1() {
        return name1;
    }

    public String getName2() {
        return name2;
    }

    public double getgrade1() {
        return grade1;
    }

    public double getgrade2() {
        return grade2;
    }

    public double getgrade3() {
        return grade3;
    }

    public void setAverage(double ave) {
        average = ave;
    }

    public double getAverage() {
        return average = (grade1 + grade2 + grade3) / 3;
    }

    public String toString() {
        return String.format("%-5s %2s the average is: %5s%% ", name1, name2,
                average);
    }
}

Main method:

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

    System.out.println("Enter the  frist  and last name of student" );

    String inf=in.nextLine();
    String infs=in.nextLine();

    Account account= new Account(inf,infs,5,6,7);    
    System.out.print(account);
}

I fed up of trying to solve it , so please help me.

Perception
  • 79,279
  • 19
  • 185
  • 195
Ahmadz Issa
  • 669
  • 3
  • 12
  • 36

2 Answers2

0

You never assign any value to average so it keeps its default value of 0.0. Move this assignment from getAverage

average = (grade1 + grade2 + grade3) / 3;

to your constructor. Getter and setters typically do not contain this type of logic.

Reimeus
  • 158,255
  • 15
  • 216
  • 276
  • And remove the unnecessary setters and instance attributes like setAverage and average, and format the code, and... – Víctor Herraiz Jan 26 '13 at 11:56
  • Agreed, should really be no logic in any setter/getter other than assignment/return – Reimeus Jan 26 '13 at 12:00
  • I assigned it here " Account account= new Account(inf,infs,5,6,7);" I will try to assign it inside the class . thank you for relying – Ahmadz Issa Jan 26 '13 at 12:07
  • There's no assignment to `average` in the constructor. You have a `getAverage` method which you never call. As a result the value of `average` in your `toString` method equals `0.0`. – Reimeus Jan 26 '13 at 12:10
0

What is the use of getters and setters if you have already have done initialization in constructor.

Any ways, your public Account(String a1 ,String a2 ,double b1,double b2,double b3)

should look something like this:

public  Account(String a1 ,String a2 ,double b1,double b2,double b3) {

name1=a1;
name2=a2;
grade1=b1;
grade2=b2;
grade3=b3;
average=getAverage();

}

As suggested by @Reimeus , You never assign any value to average.

Community
  • 1
  • 1
joey rohan
  • 3,505
  • 5
  • 33
  • 70