i有一个平均主要方法之外的方法。在主的末尾,我正在呼吁该平均方法。我不理解以下方式1.使用我声明的变量与此程序中的其他方法。例如,在计算_average方法中定义的总和。或者主方法中定义的总和。
请告诉我
-
如何互换变量进入和流入主要方法。在不是主要的方法之间互换。
-
在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();
}}
您在 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
循环及其内容缩进又有四个空间,因此循环开始垂直与上面的代码对齐,因为它在同一块中(方法的块)。 - 将最后2个括号分为单独的线
- 与匹配的打开括号垂直将最后两个括号对齐
- 您是从创建
calculate_average
方法开始的,但继续分解main
。它太长了。那里太多了。 - 将
if (count == 20)
更改为if (count >= 20)
。然后很难弄乱。
我认为您有静态方法,因此,您可以使用 className.methodname 直接调用再见。
只是将您的方法声明为公开,您也可以在外面打电话。
programTwo.calculate_average(myArr)
无需创建对象来调用静态方法。
我的代码没有什么看不到的,除了您缺少 calculate_average
方法中的返回语句。
另外,如果您命名了方法calculate_average
,则应返回平均而不是 sum 。
尝试以下操作:
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
}