Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.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_Oop_Arraylist_Methods_This - Fatal编程技术网

Java 如何编写引用调用它的对象的方法?

Java 如何编写引用调用它的对象的方法?,java,oop,arraylist,methods,this,Java,Oop,Arraylist,Methods,This,我正在制作一个程序,打印出你输入的三个数字,然后输出这些数字的平均值。在创建了所需的方法之后,当我编译代码时,使用带有分数的方法时出现了错误。我不确定在调用mPrint()或average()时如何引用分数 编译代码时,它会在得分的行中抛出错误。mPrint(3)和得分。平均值()是。这些错误是: 类型ArrayList的方法(此处的方法)未定义 我导入了:java.util.ArrayList和java.util.Scanner public class OOPtraining { Arra

我正在制作一个程序,打印出你输入的三个数字,然后输出这些数字的平均值。在创建了所需的方法之后,当我编译代码时,使用带有
分数的方法时出现了错误。我不确定在调用
mPrint()
average()
时如何引用
分数

编译代码时,它会在
得分的行中抛出错误。mPrint(3)
得分。平均值()是。这些错误是:
类型ArrayList的方法
(此处的方法)
未定义

我导入了:java.util.ArrayList和java.util.Scanner

public class OOPtraining {

ArrayList<Double> scores = new ArrayList<Double>();

public void mPrint(Integer prints) {

    for (Integer i =0;i<prints; i++) {
        System.out.println(scores.get(i));
    }

}

public void average() {

    double divi = scores.get(0)+scores.get(1)+scores.get(2);
    System.out.println(divi/3);

}

public void main(String[] args) {

    ArrayList<Double> scores = new ArrayList<Double>();

    Scanner reader = new Scanner(System.in);


    // down here is where I input the scores and then add them to "scores"
    System.out.println("Enter a score: ");
    double score1 = reader.nextDouble();
    while (true) {
        System.out.println("Type a double-type number:");
        try {
            score1 = Double.parseDouble(reader.next());
            break;
        } catch (NumberFormatException ignore) {
            System.out.println("Invalid input");
        }
    }
    scores.add(score1);


    System.out.println("Enter another score: ");
    double score2 = reader.nextDouble();
    while (true) {
        System.out.println("Type a double-type number:");
        try {
            score2 = Double.parseDouble(reader.next());
            break;
        } catch (NumberFormatException ignore) {
            System.out.println("Invalid input");
        }
    }
    scores.add(score2);


    System.out.println("Enter another score: ");
    double score3 = reader.nextDouble();
    while (true) {
        System.out.println("Type a double-type number:");
        try {
            score3 = Double.parseDouble(reader.next());
            break;
        } catch (NumberFormatException ignore) {
            System.out.println("Invalid input");
        }
    }
    scores.add(score3);
    //here is where I stop adding the scores to "scores"


    scores.mPrint(3);
    scores.average();


    }
}
公共课堂培训{
ArrayList分数=新建ArrayList();
公共无效打印(整数打印){
对于(整数i=0;i
这将导致编译失败,因为您声明的类没有get方法。但不清楚您到底想做什么


我明白你现在要做的了,你要访问你的类的一个成员变量,“this”指的是你在OOPTraining中的类。你要做的是访问scores ArrayList。要做到这一点,分数必须是一个类变量,而不是主方法中的局部变量。看看这个和那个应该可以开始了。

在您试图调用此.get(int)的同一个类中,必须有一个名为get()的方法 否则它将无法工作。
我认为您正在使用list,但忘记了扩展它

引用了类的某个实例
OOPtraining
此。get(0)
调用类
OOPtraining
上的
get()
方法,并将
0
作为该方法的第一个也是唯一参数传递给该方法

问题是您的类
OOPtraining
没有
get()
方法。您需要将
get()
方法添加到
OOPtraining
中,或者更可能的是,找出您想要调用的
get()
并提供该类的实例。然后,代码看起来像
myList.get(0)

如果
this.get(i)
失败,那么您可能会犯两个错误

首先,您的类可能没有名为
get
的方法。因此,要更正错误,请在类中定义
get
方法


其次,如果你有一个
get
方法,你可能已经用
static
关键字定义了它。在这种情况下,从方法的定义中删除
static
关键字。另一个解决方案是用你的类名替换
this
关键字。静态方法独立于对象,因此甚至不用构造一个函数就可以调用一个函数。

get(…)中有什么?在什么方面它似乎是不正确的?请告诉我们你期望它做什么。它没有任何意义。你的问题很不清楚,请更明确一点,因为在上面的问题中是神秘的,但我想知道的是如何引用ArrayList,如果调用该方法,将调用该ArrayList(在这种情况下,
得分
)当我创建一个方法时。我最近添加了代码的其余部分以进行澄清。我不认为回答者需要它的其余部分,但希望这会有所帮助。
static
如何影响我的代码取决于我是否使用它?我刚刚编辑了我的答案,你可以在上面搜索更多。我最近练习了方法、ArrayList和HashMaps等等Codecademy和我不完全确定如何使用“this”,因为我没有完全接触到它。
this.get(i)