如何在java中调用main方法之外的方法

时间:2014-02-08 05:57:09

标签: java methods main

我有一个平均主方法之外的方法。在主要结束时,我呼吁采用平均方法。我不是在暗示道路的方式 1.使用我在本程序中使用其他方法声明的变量。例如,calculate_average方法中定义的总和。 要么 主方法中定义的总和。

请告诉我

  1. 如何将变量输入和输出main方法。可以在主要方法之间互换。

  2. 调用main中main之外的方法来计算平均值。

  3. 这是我目前的代码。

    import java.util.ArrayList;
    import java.util.Scanner;
    
    class programTwo
    {
    
        private static Double calculate_average( ArrayList<Double> myArr )
        {
            Double Sum = 0.0;
            for (Double number: myArr)
            {
                Sum += number;
            }
    
        }
    
        public static void main( String[] args )
        {
            Scanner scan = new Scanner(System.in);
            ArrayList<Double> myArr = new ArrayList<Double>();
            double Sum = 0;
            int count = 0;
            System.out.println("Enter a number to be averaged, repeat up to 20 times:");
            String inputs = scan.nextLine();
    
        while (!inputs.matches("[qQ]") )
        {
    
            if (count == 20)
            {
                System.out.println("You entered more than 20 numbers, you suck!");
                break;
            }
    
            Scanner scan2 = new Scanner(inputs); // create a new scanner out of our single line of input
            myArr.add(scan2.nextDouble());
            count += 1;
            System.out.println("Please enter another number or press Q for your average");
    
            inputs = scan.nextLine();
        }
        Double average = calculate_average(myArr);
        System.out.println("Your average is: " + average);
    
        return Sum / myArr.size();
    
    }}
    

3 个答案:

答案 0 :(得分:2)

你在main

的末尾有这个
return Sum / myArr.size();

您需要将其移至calculate_average

private static Double calculate_average( ArrayList<Double> myArr )
{
    Double Sum = 0.0;
    for (Double number: myArr)
    {
        Sum += number;
    }

    return Sum / myArr.size();
}

鉴于mainvoid并且平均值没有意义作为退出代码,即使它不是,我假设这是某种印刷错误。

一些代码审核

  • 本地变量应以小写字母开头。所以sum,而不是Sum
  • 您可以使用原始double而不是Double对象。使用该对象将导致装箱/拆箱开销。
  • while循环及其内容缩进四个以上的空格,以便循环开始与其上方的代码垂直对齐,因为它位于同一个块(方法的块)中​​。
  • 将最后2个括号拆分为单独的行
  • 使用匹配的大括号
  • 垂直排列最后两个大括号
  • 您已经开始创建calculate_average方法了,但继续分解main。它太长了。太多了。
  • if (count == 20)更改为if (count >= 20)。那么,更难搞乱。

答案 1 :(得分:1)

我认为你有静态方法, 所以你可以直接使用 className.MethodName 来称呼它们。

只需将您的方法声明为公开,您也可以在外面调用它们。

 programTwo.calculate_average(myArr)

无需为调用静态方法创建对象。

答案 2 :(得分:1)

除了您在calculate_average方法中缺少返回语句外,我的代码没有任何错误。

此外,如果您为方法calculate_average命名,则应返回平均值而不是总和

试试这个:

private static Double calculate_average( ArrayList<Double> myArr )
{
    Double sum = 0.0;
    for (Double number: myArr)
    {
        sum += number;
    }
    return sum/myArr.size(); // added return statement
}