有人可以告诉我如何编写和覆盖方法以找到最多 6 个百分比输入的几何平均值
Can someone show me how to write and override methods in order to find the geometric mean of up to 6 inputs of percentages
我对定义方法和重写方法不熟悉,如果可以请向我解释。
这是我目前所掌握的。
我需要让用户输入 1-6 年以及每年增加或减少的百分比,然后我需要找到这些数字的几何平均值。
import java.util.Scanner;
public class GeometricMean_slm
{
//not sure if this is neccessary or proper
public double average;
public double y1;
public double y2;
public double y3;
public double y4;
public double y5;
public double y6;
public static void geometricMean6()
{
Scanner keyboard = new Scanner(System.in);
System.out.println("Enter the length of time of the investment (1 to 6 years):");
int years = keyboard.nextInt();
System.out.println("Please enter the percent increase or decrease for each year:");
double y1 = keyboard.nextInt();
double y2 = keyboard.nextInt();
double y3 = keyboard.nextInt();
double y4 = keyboard.nextInt();
double y5 = keyboard.nextInt();
double y6 = keyboard.nextInt();
}
//neither method will execute when I run
public void main(String[] args)
{
geometricMean6();
average = (double)Math.pow(y1 * y2 * y3 * y4 * y5 * y6, .16);
System.out.println("end"+ average);
}
}
此代码需要重复 1-6 次,具体取决于用户输入的年份。我还需要程序在 运行 之后提示用户进行另一个输入,我不知道该怎么做。
首先,你的方法没有被执行的原因是你的main方法不是静态的,它应该是这样的:
public static void main(String[] args){
geometricMean6();
average = (double)Math.pow(y1 * y2 * y3 * y4 * y5 * y6, .16);
System.out.println("end"+ average);
}
那么第二个问题是您不需要那些从函数“geometricMean”中分配的值,即使您需要,您也应该将它们设为静态以便在主函数中访问它们。由于您必须获得几何平均值,我已将您的函数从 void 更改为 double,以便 return 一些结果。具体如下:
public static double geometricMean6()
{
double result = 1;
Scanner keyboard = new Scanner(System.in);
System.out.println("Enter the length of time of the investment (1 to 6 years):");
int years = keyboard.nextInt();
System.out.println("Please enter the percent increase or decrease for each year:");
double input = keyboard.nextDouble();
result *= input;
int i = 1;
while(i < years){
input = keyboard.nextDouble();
i++;
result *= input;
}
result = (double) Math.pow(result, (double) 1 / years);
return result;
}
为了return最终结果,我在这里分配了一个双精度结果。 while 循环正在实现具有多个输入的目标。它将达到“年”输入。然后,我将用户输入的所有输入相乘。最后,代码在函数中计算几何平均数 returns 结果。这就是为什么在 main 函数中你所要做的就是调用函数并打印出它 returns 的结果。具体如下:
public static void main(String[] args)
{
System.out.println("Average is : " + geometricMean6());
}
希望对您有所帮助。祝你有美好的一天!
我对定义方法和重写方法不熟悉,如果可以请向我解释。
这是我目前所掌握的。
我需要让用户输入 1-6 年以及每年增加或减少的百分比,然后我需要找到这些数字的几何平均值。
import java.util.Scanner;
public class GeometricMean_slm
{
//not sure if this is neccessary or proper
public double average;
public double y1;
public double y2;
public double y3;
public double y4;
public double y5;
public double y6;
public static void geometricMean6()
{
Scanner keyboard = new Scanner(System.in);
System.out.println("Enter the length of time of the investment (1 to 6 years):");
int years = keyboard.nextInt();
System.out.println("Please enter the percent increase or decrease for each year:");
double y1 = keyboard.nextInt();
double y2 = keyboard.nextInt();
double y3 = keyboard.nextInt();
double y4 = keyboard.nextInt();
double y5 = keyboard.nextInt();
double y6 = keyboard.nextInt();
}
//neither method will execute when I run
public void main(String[] args)
{
geometricMean6();
average = (double)Math.pow(y1 * y2 * y3 * y4 * y5 * y6, .16);
System.out.println("end"+ average);
}
}
此代码需要重复 1-6 次,具体取决于用户输入的年份。我还需要程序在 运行 之后提示用户进行另一个输入,我不知道该怎么做。
首先,你的方法没有被执行的原因是你的main方法不是静态的,它应该是这样的:
public static void main(String[] args){
geometricMean6();
average = (double)Math.pow(y1 * y2 * y3 * y4 * y5 * y6, .16);
System.out.println("end"+ average);
}
那么第二个问题是您不需要那些从函数“geometricMean”中分配的值,即使您需要,您也应该将它们设为静态以便在主函数中访问它们。由于您必须获得几何平均值,我已将您的函数从 void 更改为 double,以便 return 一些结果。具体如下:
public static double geometricMean6()
{
double result = 1;
Scanner keyboard = new Scanner(System.in);
System.out.println("Enter the length of time of the investment (1 to 6 years):");
int years = keyboard.nextInt();
System.out.println("Please enter the percent increase or decrease for each year:");
double input = keyboard.nextDouble();
result *= input;
int i = 1;
while(i < years){
input = keyboard.nextDouble();
i++;
result *= input;
}
result = (double) Math.pow(result, (double) 1 / years);
return result;
}
为了return最终结果,我在这里分配了一个双精度结果。 while 循环正在实现具有多个输入的目标。它将达到“年”输入。然后,我将用户输入的所有输入相乘。最后,代码在函数中计算几何平均数 returns 结果。这就是为什么在 main 函数中你所要做的就是调用函数并打印出它 returns 的结果。具体如下:
public static void main(String[] args)
{
System.out.println("Average is : " + geometricMean6());
}
希望对您有所帮助。祝你有美好的一天!