0
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.

to me it seems like the calcPower method might be where i'm having issues but it seems like it's correct. it looks to me like raisedResult is not being populated after the calcPower method.

can someone please walk me through the steps of where i'm making my mistake.

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

}


}
user207421
  • 305,947
  • 44
  • 307
  • 483

3 Answers3

0

Your calcPower() method returns the value of the computation, but the main method doesn't do anything with the returned value. BTW, the third argument of calcPower() is useless.

You should have, in the main method:

raisedResult = calcPower(baseNumber, raisedNumber);

Think of arguments as inputs to a method, and of the returned value as the output of the method. raisedResult is an output, and thus doesn't have to be passed as argument. It has to be initialized with the output of the method though.

You should also introduce variables only when you need them, and avoid declaring and initializing with useless values at the beginning:

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

While you're at it, also avoid using cryptic abbreviations in method names. computePower() and displayRaiseNumber() would be better names for your methods.

JB Nizet
  • 678,734
  • 91
  • 1,224
  • 1,255
  • ok, that helped, my results are not what i was expecting after the "time equal". – Charles Carper Mar 23 '14 at 17:33
  • 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)); } – Charles Carper Mar 23 '14 at 17:34
  • What result are you expecting, and what result do you get? – JB Nizet Mar 23 '14 at 17:35
0

Here's your problem:

raisedNumber = keyBoard.nextDouble();
calcPower(baseNumber,raisedNumber,raisedResult);

calcPower returns a value, it does not return the result in the raisedResult value passed in, as java is a pass by value language. Remove raisedResult from the args for calcpower, and use the returned value, like this:

raisedNumber = keyBoard.nextDouble();
raisedResult = calcPower(baseNumber,raisedNumber);
Community
  • 1
  • 1
John Gardner
  • 24,225
  • 5
  • 58
  • 76
0

In the calcPower method call, the result is returned. You set the result to a value using the equals sign. In your calcPower method, you're returning a double. I set the result to a double and removed the parameter from the method call where you were expecting the return value.

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
}
Gilbert Le Blanc
  • 50,182
  • 6
  • 67
  • 111