简体   繁体   中英

My method in Java can't find the value of the variable and sets it as 0. What am I doing wrong?

So I have two methods:

public double calcAvg()
    {

        double dSum;
        dSum=iTest1+iTest2+iTest3/3;
        System.out.print(dSum);
        return dSum;
    }
public void setTestScores(int iTest1, int iTest2, int iTest3)
    {
        if(iTest1>0)
        {
            this.iTest1=iTest1;
        }
        if(iTest2>0)
        {
            this.iTest2=iTest2;
        }
        if(iTest3>0)
        {
            this.iTest3=iTest3;
        }

I am trying to figure out why calcAvg() is setting the values of iTest1, iTest2, iTest3 as 0 after inputting the variables with values like so: Methods.setTestScores(90,78,83);

EDIT Added global code



import java.util.Scanner;
import java.text.DecimalFormat;

public class Student
{   Scanner kbAlpha=new Scanner(System.in);
    Scanner kbNum=new Scanner(System.in);
    String strLast;             //student's last name
    String strFirst;            //student's first name
    int iTest1;                 //test 1
    int iTest2;                 //test 2
    int iTest3;                 //test 3
    String strStreet;           //student’s street address
    String strCity;             //student’s city
    String strState;            //student’s state
    String strZip;              //student’s zip


//+Student(first:String,last:String)        //the only constructor
    public String Student(String first , String last)
    {
        return first + last;

    }


//+setName(first:String, last:String):void
    public void setName(String strFirst,String strLast)
{
    if(strFirst.equals(""))
        {

        }
        else
        {
            this.strFirst=strFirst;
        }
        if(strLast.equals(""))
        {

        }
        else
        {
            this.strLast=strLast;
        }
}//end setName (String ,String) 

//+setTestScores( t1:int,  t2:int,  t3:int):void
    public void setTestScores(int iTest1, int iTest2, int iTest3)
    {
        if(iTest1>0)
        {
            this.iTest1=iTest1;
        }
        if(iTest2>0)
        {
            this.iTest2=iTest2;
        }
        if(iTest3>0)
        {
            this.iTest3=iTest3;
        }
    }//end setTestScores(int, int, int)

//+setTest(score:int,numTest:int):void
    public void setTest(int score, int numTest)
    {
        if(numTest>=1 && numTest<=3)
        {
            switch(numTest)
            {
                case 1:
                this.iTest1=score;
            }
        }

    }//end setTest(int, int)

//+setStreet(street:String):void
    public void setStreet(String strStreet)
    {
        if(strStreet.equals(""))
        {
        }
        else
        {
            this.strStreet=strStreet;
        }
    }//end setStreet(String)

//+setCity(city:String):void
    public void setCity(String strCity)
    {
        if(strCity.equals(""))
        {
        }
        else
        {
            this.strCity=strCity;
        }
    }//end setCity(String)

//+setState(state:String):void
    public void setState(String strState)
    {
        if(strState.equals(""))
        {
        }
        else
        {
            this.strState=strState;
        }
    }//end setState(String)

//+setZip(zip:String):void
    public void setZip(String strZip)
    {
        if(strZip.equals(""))
        {
        }
        else
        {
            this.strZip=strZip;
        }
    }//end setZip(String)

//+setAddress(street:String,city:String,state:String,zip:String):void
    public void setAddress(String strStreet,String strCity,String strState,String strZip)
    {
        if(strStreet.equals(""))
        {
        }
        else
        {
            this.strStreet=strStreet;
        }
        if(strCity.equals(""))
        {
        }
        else
        {
            this.strCity=strCity;
        }
        if(strState.equals(""))
        {
        }
        else
        {
            this.strState=strState;
        }
        if(strZip.equals(""))
        {
        }
        else
        {
            this.strZip=strZip;
        }
    }//end setAddress(String,String,String,String)

//+getName():String
    public String getName()
    {
        String strName;
        strName=this.strFirst + this.strLast;
        return strName;
    }//end getName()

//+getTest(numTest:int):int
    public int getTest(int numTest)
    {

        return numTest;

    }//end getTest(int)

//+getAddress():String
    public String getAddress()
    {
        String strAddress;
        strAddress=(this.strStreet + this.strCity + this.strState + this.strZip);
        return strAddress;
    }//end getAddress()

//+getStreet():String
    public String getStreet()
    {
        String strStreet;
        strStreet=this.strStreet;
        return this.strStreet;
    }//end getStreet()

//+getCity():String
    public String getCity()
    {
        String strCity;
        strCity=this.strCity;
        return this.strCity;
    }//end getCity()

//+getState():String
    public String getState()
    {
        String strState;
        strStreet=this.strState;
        return this.strState;
    }//end getState()

//+getZip():String
    public String getZip()
    {
        String strZip;
        strZip=this.strZip;
        return this.strZip;
    }//end getZip()
//+findMax():int
//+findMin():int
//+calcAvg():double
    public double calcAvg()
    {
        //double dAvg;
        double dSum;
        dSum=(iTest1+iTest2+iTest3)/3;
        System.out.print(dSum);
        return dSum;
    }
//+studentRecord():String
    //public String studentRecord()

}
//+letterGrade():char
//+equals(s:Student):Boolean
import java.util.Scanner;
import java.text.DecimalFormat;
public class Proj3
{
    public static void main(String[] args)
    {

        Methods.setTestScores(90,78,83);
        Student MethodAvg = new Student();
        MethodAvg.calcAvg();
        }
}

You didn't post what Methods is, but I'm assuming it's an instance of Student . The reason why iTest1, iTest2, iTest3 are 0 is that you are setting the values in the first Student , but calling calcAvg() on the second one, where the variables have default 0 value. Try

public static void main(String[] args)
{
    Student student = new Student();
    student.setTestScores(90, 78, 83);
    student.calcAvg();
}

The problem is in the main method, you are setting the variables in instance and calculating the average on a separate instance, try the below code it will work:

public static void main(String[] args)
{
    Student std = new Student();
    std.setTestScores(90,78,83);
    std.calcAvg();
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM