I get this as a result when i type 9 as input.
Enter a Base Number:
9
Enter a Raised Number:
9
9.0 raised 9.0 times equals 0.0.
0.0 rounded equals 0
End of Program.
对我来说,似乎calcPower方法可能是我遇到问题的地方,但似乎它是正确的。 它看起来像在calcPower方法之后没有填充raiseResult。
有人可以带我走过我犯错误的步骤。
import java.util.Scanner; // import the scanner utility
public class Chap08
{
//----------------------------------------------Main--------------------------------------------------------------------//
public static void main(String[] args)
{
getInput();
System.out.println();
System.out.println("End of Program.");
}
//----------------------------------------------getInput--------------------------------------------------------------------//
public static void getInput()
{
double baseNumber = 0.0, raisedNumber = 0.0 , raisedResult = 0.0;
Scanner keyBoard = new Scanner(System.in);
System.out.println("Enter a Base Number:");
baseNumber = keyBoard.nextDouble();
System.out.println("Enter a Raised Number:");
raisedNumber = keyBoard.nextDouble();
calcPower(baseNumber,raisedNumber,raisedResult);
dspRaisedNumber(baseNumber,raisedNumber,raisedResult);
keyBoard.close(); // close keyboard scanner
}
//----------------------------------------------calcPower--------------------------------------------------------------------//
public static double calcPower(double baseNumber,double raisedNumber,double raisedResult)
{
raisedResult = Math.pow (baseNumber,raisedNumber);
return raisedResult;
}
//----------------------------------------------dspRaisedNumber--------------------------------------------------------------------//
public static void dspRaisedNumber(double baseNumber,double raisedNumber, double raisedResult)
{
System.out.println(baseNumber + " raised " + raisedNumber + " times equals " + raisedResult + ".");
System.out.println(baseNumber*raisedResult + " rounded equals " + Math.round(baseNumber*raisedResult* 1.0 / 1.0));
}
}
答案 0 :(得分:0)
您的calcPower()
方法返回计算的值,但main方法对返回的值没有任何作用。顺便说一下,calcPower()
的第三个论点是没用的。
你应该在主要方法中使用:
raisedResult = calcPower(baseNumber, raisedNumber);
将参数视为方法的输入,并将返回值视为方法的输出。 raisedResult
是输出,因此不必作为参数传递。它必须使用方法的输出进行初始化。
您还应该仅在需要时引入变量,并避免在开头使用无用的值声明和初始化:
Scanner keyBoard = new Scanner(System.in);
System.out.println("Enter a Base Number:");
double baseNumber = keyBoard.nextDouble();
System.out.println("Enter a Raised Number:");
double raisedNumber = keyBoard.nextDouble();
double raisedResult = calcPower(baseNumber, raisedNumber);
dspRaisedNumber(baseNumber, raisedNumber, raisedResult);
keyBoard.close(); // close keyboard scanner
当你在这里时,也避免在方法名称中使用神秘的缩写。 computePower()
和displayRaiseNumber()
会为您的方法提供更好的名称。
答案 1 :(得分:0)
这是你的问题:
raisedNumber = keyBoard.nextDouble();
calcPower(baseNumber,raisedNumber,raisedResult);
calcPower
返回一个值,它不会将raisedResult
传入的raisedResult
值作为java is a pass by value语言返回。从图标中删除raisedNumber = keyBoard.nextDouble();
raisedResult = calcPower(baseNumber,raisedNumber);
以获取calcpower,并使用返回的值,如下所示:
{{1}}
答案 2 :(得分:0)
在calcPower方法调用中,返回结果。您可以使用等号将结果设置为值。在calcPower方法中,您将返回一个double。我将结果设置为double并从方法调用中删除了您期望返回值的参数。
public static void getInput()
{
double baseNumber = 0.0, raisedNumber = 0.0 , raisedResult = 0.0;
Scanner keyBoard = new Scanner(System.in);
System.out.println("Enter a Base Number:");
baseNumber = keyBoard.nextDouble();
System.out.println("Enter a Raised Number:");
raisedNumber = keyBoard.nextDouble();
double raisedResult = calcPower(baseNumber,raisedNumber);
dspRaisedNumber(baseNumber,raisedNumber,raisedResult);
keyBoard.close(); // close keyboard scanner
}