我有一个平均主方法之外的方法。在主要结束时,我呼吁采用平均方法。我不是在暗示道路的方式 1.使用我在本程序中使用其他方法声明的变量。例如,calculate_average方法中定义的总和。 要么 主方法中定义的总和。
请告诉我
如何将变量输入和输出main方法。可以在主要方法之间互换。
调用main中main之外的方法来计算平均值。
这是我目前的代码。
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();
}}
答案 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();
}
鉴于main
是void
并且平均值没有意义作为退出代码,即使它不是,我假设这是某种印刷错误。
sum
,而不是Sum
double
而不是Double
对象。使用该对象将导致装箱/拆箱开销。while
循环及其内容缩进四个以上的空格,以便循环开始与其上方的代码垂直对齐,因为它位于同一个块(方法的块)中。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
}