Java Class 中的方法调用

Method Calling in a Java Class

所以我很确定我只是在这里犯了一个基本错误,但我无法在我的任何一个静态方法中获取 return 值以到达 main 方法。我对该区域的输出每次都为零。出了什么问题?

非常感谢 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;
}

}

变量 result, length, width, height 值初始化为 0。

因此,当您调用 box(result, length, width, height) 时,这类似于这样调用 box(0, 0, 0, 0)。此外,您不需要发送 result 变量,您可以在方法本身中创建一个。并且不要发送高度变量,因为您没有在方法内部使用它。

框内方法将 0 与 0 相乘,然后返回 0,即您要返回的值。 Sphere 方法也一样,只是将 return 0 更改为 return result

示例代码

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
}

输出:Box Area is 25.0

更新:-

如果您想要 length and width 的用户输入,那么您可以执行以下操作

示例代码

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.