使用Math Class获取有源号码并显示结果

时间:2014-03-23 17:19:33

标签: java math

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

}


}

3 个答案:

答案 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
}