使用Java中的setter和getter从另一个类调用方法

时间:2016-04-13 01:21:58

标签: java class variables object methods

我需要一些帮助,因为我完全迷失了。我试图调用我在另一个类中创建的方法来输出用户输入的平均等级,但我不确定我搞砸了哪里。我不知道如何调用我的其他类,我读到使用一个对象作为变量在Java中不起作用,但我不知道如何让它通过将其他类中的方法应用到给出正确的分数。

这是包含方法的类....

public class Assignment {

    private double score;

    public double getScore(){
        return score;
    }
    public void setScore(double newScore){
        score = newScore;
    }

    public static void newScore(double a, double b, double c, double d, double f) {

        double score1 = a;
        double score2 = b;
        double score3 = c;
        double score4 = d;
        double score5 = f;

        if (score1 >= 90) {
            System.out.println("Your grade is: " + score1);
            System.out.println("Great job!");
        } else if (score2 >= 80 && score2 < 90) {
            System.out.println("Your grade is: " + score2);
            System.out.println("Not bad!");
        } else if (score3 >= 70 && score3 < 80) {
            System.out.println("Your grade is: " + score3);
            System.out.println("Need a little work");
        } else if (score4 >= 60 && score4 < 70) {
            System.out.println("Your grade is: " + score4);
            System.out.println("Not looking so good.");
        } else if (score5 >= 50 && score5 < 60) {
            System.out.println("Your grade is: " + score5);
            System.out.print("Study harder!");
        } else {
            System.out.println("Yikes!");
        }
    }
}

这就是我在主要方法中的内容......

import java.util.Scanner;

public class Grades {

    public static void main(String[] args) {            
        Scanner input = new Scanner(System.in);
        Assignment newScore = new Assignment ();    
        System.out.println("Enter your test score: ");
        newScore = input.nextDouble();
        System.out.println("Your current grade is: " + newScore);       
    }

}

2 个答案:

答案 0 :(得分:0)

由于变量newScoreAssignment对象而不是double,因此无法编译代码newScore = input.nextDouble();。我想您使用输入数字作为score,因此该行应为

newScore.setScore(input.nextDouble());

因此下一行应该是

System.out.println("Your current grade is: " + newScore.getScore());

请更换这两行并检查它是否符合您的要求。

编辑:

Assignment.java

public class Assignment {

    private double score;

    public double getScore(){
        return score;
    }
    public void setScore(double newScore){
        score = newScore;
    }

    public void checkScore(double a, double b, double c, double d, double f) {
        if (score >= a) {
            System.out.println("Your grade is: " + score);
            System.out.println("Great job!");
        } else if (score >= b && score < a) {
            System.out.println("Your grade is: " + score);
            System.out.println("Not bad!");
        } else if (score >= c && score < b) {
            System.out.println("Your grade is: " + score);
            System.out.println("Need a little work");
        } else if (score >= d && score < c) {
            System.out.println("Your grade is: " + score);
            System.out.println("Not looking so good.");
        } else if (score >= f && score < d) {
            System.out.println("Your grade is: " + score);
            System.out.print("Study harder!");
        } else {
            System.out.println("Yikes!");
        }
    }
}

Grades.java

import java.util.Scanner;

public class Grades {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        Assignment newScore = new Assignment();
        System.out.println("Enter your test score: ");
        newScore.setScore(input.nextDouble());
        newScore.checkScore(90, 80, 70, 60, 50);
        System.out.println("Your current grade is: " + newScore.getScore());
    }

}

答案 1 :(得分:0)

这里不太明白你的问题。你有一个获得多分数的方法,它有一组if-else语句来确定要打印的消息;

如果第一次得分超过90,请执行此操作, 如果不满足第一分数的条件,则检查第二分数值。 然后如果没有达到第二个条件,那么检查第三个分数,看它是否符合某个分数......等等等等

如果您正在寻找一个作业分班来保留一组分数并最终打印出每个分数,那么就这样做;

修改您的作业类是为了允许一次保留多个分数。为了能够保存多个分数,您必须将分数变量至少更改为数组或列表。也就是List<Double> scores = new ArrayList<Double>();

然后将setter方法修改为&#34; addScore(双分)&#34;

public void addScore(double score) {
    scores.add(score)
}

在你的&#34; newScore&#34;方法,使用循环迭代分数,为每个分配输出适当的分数消息。

for (Double score : scores) {
    if (score > 90) {   
        System.out.println('blah');
    }
}

请注意,上面的代码只是我输入的内容,我没有使用任何编译器对其进行测试,因此您可能需要修改一些语法错误。