Мой метод в Java не может найти значение переменной и устанавливает его в 0. Что я делаю неправильно? - PullRequest
0 голосов
/ 31 октября 2019

Итак, у меня есть два метода:

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;
        }

Я пытаюсь выяснить, почему calcAvg() устанавливает значения iTest1, iTest2, iTest3 в 0 после ввода переменных со значениями, такими как:Methods.setTestScores(90,78,83);

РЕДАКТИРОВАТЬ Добавлен глобальный код



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();
        }
}

Ответы [ 2 ]

0 голосов
/ 31 октября 2019

Проблема в основном методе, вы устанавливаете переменные в экземпляре и вычисляете среднее значение для отдельного экземпляра, попробуйте следующий код, который будет работать:

public static void main(String[] args)
{
    Student std = new Student();
    std.setTestScores(90,78,83);
    std.calcAvg();
}
0 голосов
/ 31 октября 2019

Вы не опубликовали, что такое Methods, но я предполагаю, что это экземпляр Student. Причина, по которой iTest1, iTest2, iTest3 равны 0, заключается в том, что вы устанавливаете значения в первом Student, но вызываете calcAvg() во втором, где переменные имеют значение по умолчанию 0. Попробуйте

public static void main(String[] args)
{
    Student student = new Student();
    student.setTestScores(90, 78, 83);
    student.calcAvg();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...