Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将数组传递给构造函数并在类中使用它?_Java_Arrays_Class_Constructor - Fatal编程技术网

Java 如何将数组传递给构造函数并在类中使用它?

Java 如何将数组传递给构造函数并在类中使用它?,java,arrays,class,constructor,Java,Arrays,Class,Constructor,这是我的主要方法,我正试图重新开始编码,因为我在学校里多次失败。我想从主方法中获取一个数组,并从循环中获取用户输入,然后将其传递给“TestScoresTwo.java”类中的构造函数。然后,我想获取该数组并使用它对值求和,在类中的方法中找到平均值,然后返回和 import java.math.*; import java.text.DecimalFormat; import java.io.*; public class labBookFortyTwo { public static vo

这是我的主要方法,我正试图重新开始编码,因为我在学校里多次失败。我想从主方法中获取一个数组,并从循环中获取用户输入,然后将其传递给“TestScoresTwo.java”类中的构造函数。然后,我想获取该数组并使用它对值求和,在类中的方法中找到平均值,然后返回和

import java.math.*;
import java.text.DecimalFormat;
import java.io.*;


public class labBookFortyTwo
{
public static void main(String[] args)
{


Scanner myInput = new Scanner(System.in);

System.out.println("Please enter the amount of grades there are ");

int size = myInput.nextInt();

double grade = 0;

double[] myArray = new double[size];

for(int count = 0; count < myArray.length; count++)
{
    System.out.println("enter grade ");

    grade = myInput.nextDouble();

    myArray[count] = grade;

    System.out.println("grade is " + myArray[count] );

}

TestScoresTwo myScore = new TestScoresTwo(myArray, size);

double avg = myScore.avgGrade();

System.out.println("avg is" + avg);


}

}
import java.math.*;
导入java.text.DecimalFormat;
导入java.io.*;
公共类labBookFortyTwo
{
公共静态void main(字符串[]args)
{
扫描仪myInput=新扫描仪(System.in);
System.out.println(“请输入等级数量”);
int size=myInput.nextInt();
双级=0;
double[]myArray=新的double[大小];
对于(int count=0;count
这是我的TestScoresTwo.java类

public class TestScoresTwo
{

int size = 0;

double[] tScore = new double[size];

double sum = 0;



public TestScoresTwo(double[] scores ,int sizE)
{

    double[] tScore = scores;

    size = sizE;

}




public double avgGrade()
{


        for(int count = 0; count < tScore.length ; count++) 
        {
            sum = tScore[count] + sum;

        }


    double avg = sum / size;

    return avg;

}

}
公共类TestScoresTwo
{
int size=0;
double[]t核心=新的双[尺寸];
双和=0;
公共TestScoresTwo(双[]分,整数大小)
{
双[]t分数=分数;
大小=大小;
}
公共双平均等级()
{
对于(int count=0;count
编译时,我的输出为: “请输入有多少个等级” 3. “输入等级” 11 “等级为11.0” 50 “等级为50.0” 70 “等级为70.0” “平均”为0.0 “按任意键继续…”


因此,出于某种原因,在我的类TestScoresTwo.java中,输入了for循环inst,我不知道为什么。它们是两个独立的文件,我想不出包含任何其他信息。感谢您提供的任何帮助。

您的问题在于
TestScoresTwo
类:

public TestScoresTwo(double[] scores ,int sizE)
{
    double[] tScore = scores;
    size = sizE;
}
tScore是构造函数的局部变量。因此,您将传递的变量分配给局部变量,一旦到达构造函数的末尾,局部变量就会丢失

因此,当您调用
avgGrade()
来计算平均值时,它从中计算平均值的数组是空的

替换为:

public class TestScoresTwo
{
    int size = 0;
    double[] tScore; // no need to create it here, it's already created and filled in outside
    double sum = 0;

    public TestScoresTwo(double[] scores ,int sizE)
    {
        this.tScore = scores; // "this." added for clarity
        this.size = sizE; // "this." added for clarity
    }

您已将数组
double[]tScore=new double[size];
声明为零大小。您打算在构造函数中用新数组替换它:

double[] tScore = scores;
但是,您所做的只是声明一个同名的局部变量,并为其分配参数,该参数立即超出构造函数末尾的范围。由于
tScore
仍然为空且长度为零,因此似乎无法输入
for
循环

删除
double[]
,以便
tScore
解析为实例变量并正确分配

tScore = scores;
此外,看到名为
sizE
的参数和名为
sizE
的实例变量也会让人感到困惑。通常使用
this
来引用实例变量,这样它们可以被命名为相同的名称,但又很清晰。也可以尝试命名参数
sizE
,并在构造函数中使用这一行:

this.size = size;

你需要学习如何调试。如果你没有一个交互式调试器,插入Studio.Out.PrtLn语句来显示你的进度和存在的价值。非常感谢你的帮助,它是有效的,而且我之所以使用大小,是因为使用这个。对我来说是混淆的,但是我会在将来尝试和考虑它。