当前位置: 首页 > 知识库问答 >
问题:

有人能告诉我如何写和重写方法,以便找到最多6个百分比输入的几何平均值吗

董良策
2023-03-14

我不熟悉定义方法和重写它们,请解释给我,如果可以的话。

这是我目前所拥有的。
我需要允许用户输入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次,这取决于用户输入的多少年。我还需要程序在运行后提示用户另一个输入,我不知道怎么做。

共有1个答案

谷梁卓
2023-03-14

首先,您的方法没有被执行的原因是您的主方法不是静态的,它应该看起来像这样:

 public static void main(String[] args){

     geometricMean6();
     average = (double)Math.pow(y1 * y2 * y3 * y4 * y5 * y6, .16);
     System.out.println("end"+ average);                
}      

第二个问题是,您不需要那些在函数“GeometricMean”之外分配的函数,即使需要,您也应该将它们设置为静态的,以便在主函数中访问它们。因为你必须得到几何平均数,我把你的函数从虚空改为双倍,为了返回一些结果。其内容如下:

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

这里我分配了一个双结果,以便返回最终结果。While循环实现了具有多个输入的目标。它将一直到“年”的输入。然后,我将用户输入的所有输入相乘。最后,代码计算函数中的几何均值并返回结果。这就是为什么在main函数中,您所要做的就是调用函数并打印出它返回的结果。其内容如下:

public static void main(String[] args)
{

    System.out.println("Average is : " + geometricMean6());

}

希望有帮助。祝你有愉快的一天!

 类似资料:
  • 问题内容: 我试图显示最高平均工资;但是,我似乎无法使其正常工作。 我可以得到要显示的平均薪水清单: 但是,当我尝试显示具有以下项的最大平均薪水列表时: 它没有运行。我收到“无效标识符”错误。如何使用每个工人的平均工资来找到每个工人的最高平均工资? 谢谢。 问题答案: 由聚合函数(例如avg)产生的列通常获得任意名称。只需为其使用别名,然后在其上进行选择:

  • 我试图解决这个问题:第三个最大数量 但我犯了这个错误 第4行:Char 37:运行时错误:有符号整数溢出:-9223372036854775808-10不能在类型“long long”(solution.cpp)摘要中表示:UndefinedBehaviorSanitizer:undefined behavior prog_joined。cpp:13:37 这是我的代码 有人能告诉我这个错误到底意

  • 问题内容: 考虑以下: 有什么办法可以缩短时间? Javascript中有什么类似的东西吗? 另外,jQuery可以在这里提供帮助吗? 问题答案: 使用正则表达式: 或相反: [更新]更短;-)

  • 我试图在许多字符串上找到一个常见的(最常见的,甚至是“平均”)短语。不同字符串之间的结构非常糟糕,并且充满了不一致性。许多字符串都添加了与所需输出无关的唯一位:一个新字符串,其作用类似于字符串集的某种摘要。 为了说明这一点,我提供了一个小示例,实际数据更复杂,由更多字符串组成: 示例数据: 在一个更小的数据集上,结构要复杂得多,我以前一直依赖字数: 在这个更简单的数据集上,只需选取n个最常见的短语

  • 对于图像处理的练习,我必须编写一个程序,将各种效果应用于图像。其中一个效果是灰度,这是找到RGB值的平均值((红绿蓝)/3)。然而,要极化图像,我需要首先找到每个单独分量的平均值(即所有红色值/红色像素数)。然后循环遍历行和列(使用像素、红色值、绿色值和蓝色值的计数器)作为找到平均值的方法合适吗?有更有效的方法吗? 此外,像素基于平均像素值进行极化。“如果平均R是100,平均G是200,平均B是3