[英]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);
我试图弄清楚为什么
calcAvg()
在输入具有如下值的变量iTest1, iTest2, iTest3
的值设置为 0: 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
.您没有发布
Methods
是什么,但我假设它是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. iTest1, iTest2, iTest3
为 0 的原因是您在第一个Student
中设置值,但在第二个中调用calcAvg()
,其中变量的默认值为 0 。 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:问题出在 main 方法中,您在实例中设置变量并在单独的实例上计算平均值,请尝试以下代码它将起作用:
public static void main(String[] args)
{
Student std = new Student();
std.setTestScores(90,78,83);
std.calcAvg();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.