简体   繁体   中英

Method Calling in a Java Class

So I am pretty sure I am just making a basic mistake here but I can not get the return value in either of my static methods to reach the main method. My output for the area comes up as a zero every time. What went wrong?

Thanks a bunch for any input/insight!

public class project_4 { public static void main(String[] args){

    Scanner input = new Scanner(System.in);
    int choice = 0;
    double celsius, fahrenheit=0, inches=0, centimeters=0, length=0, width=0, height=0, boxVolume=0, radius=0, sphereVolume=0, result=0;
    double boxArea = box(result,  length,  width,  height);
    double sphereArea = sphere(result, radius);
    char doAgain = 'y';

    while (doAgain == 'y' || doAgain == 'Y')
    {

    System.out.print(" Main Menu \n 1. Celsius to Fahrenheit \n 2. Inches to Centimeters \n "
            + "3. Find Volume and Area of a box \n 4. Find Volume and Area of a sphere \n"
            + "Please select one of the four choices \nThen press enter to continue");
    choice = input.nextInt();


    if (choice == 1)
    {
        System.out.println("This program will convert a celsius value into a fahrenheit one. \n");

        System.out.println("Please enter the tempature for conversion: ");
        celsius = input.nextInt();

        fahrenheit = 1.8 * celsius + 32.0;

        System.out.println(celsius + " degree(s) in celcius" + " is " + fahrenheit + 
                " in fahrenheit. \n");

        System.out.println("Do you want to continue?\n: " +
                   "enter \'Y\' for another round\n " +
                  " enter \'N\'   to end the program\n");

        doAgain = input.next().charAt(0);
    }

    else if (choice == 2)
    {
        System.out.println("This program will convert inches to centimeters. \n");


        System.out.println("Please enter the length for conversion: ");
        inches = input.nextInt();


        centimeters = 2.54 * inches;


        System.out.println(inches + " inches is " + centimeters + " centimeters. \n");

        System.out.println("Do you want to continue?\n: " +
                   "enter \'Y\' for another round\n " +
                  " enter \'N\'   to end the program\n");

        doAgain = input.next().charAt(0);
    }

    else if (choice == 3)
    {
        System.out.println("Enter length: ");
        length = input.nextDouble();

        System.out.println("Enter height: ");
        height = input.nextDouble();

        System.out.println("Enter width: ");
        width = input.nextDouble();

        boxVolume = length * width * height;

        System.out.println("The area of your box is: " + boxArea + "\n" 
                + "The volume of your box is: " + boxVolume);

        System.out.println("Do you want to continue?\n: " +
                   "enter \'Y\' for another round\n " +
                  " enter \'N\'   to end the program\n");
        doAgain = input.next().charAt(0);

    }

    else if (choice == 4)
    {
        System.out.println("Enter radius: ");
        radius = input.nextDouble();

        sphereVolume = 4.0/3.0 * 3.14159 *Math.pow(radius, 3);

        System.out.println("The area of your sphere is: " + sphereArea + "\n" 
                + "The volume of your sphereVolume is: " + sphereVolume);

        System.out.println("Do you want to continue?\n: " +
                   "enter \'Y\' for another round\n " +
                  " enter \'N\'   to end the program\n");
        doAgain = input.next().charAt(0);
    }

    else
    {
        System.out.println("That is not a valid option. Please restart and try again");

        }
    }
}

public static double box(double result, double length, double width, double height)
{
    result = length * width;
    return result;
}

public static double sphere(double result, double radius)
{
    result = 3.14 * (radius * radius);
    return 0;
}

}

The variables result, length, width, height values are initialized to 0.

So when you call box(result, length, width, height) which is similar to calling like this box(0, 0, 0, 0) . Moreover you don't need to send result variable, you can create one in the method itself. And don't send height variable as you are not using it inside method.

Inside box method your multiplying 0 with 0 which in turn gives back 0 which you are returning. Same goes with Sphere method with one thing that is change return 0 to return result .

Sample code

double length = 5.0;
double width = 5.0;
double boxArea = box(length, width);
System.out.println("Box Area is " + boxArea);

public static double box (double length, double width){
  double result = length * width;
  return result
}

Output : Box Area is 25.0

Update :-

If you want the user input for length and width then you can do the following

Sample code

double length;
double width;
double boxArea;

Scanner input = new Scanner(System.in);

System.out.println("Enter the value for length and width")

length = input.nextDouble();
width = input.nextDouble();

boxArea = box(length, width);

// You can call box method inside main method with user input values of length and width.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM