简单的评分系统与方法

时间:2013-11-26 16:42:20

标签: java methods

我正在自学Java,并且已经到了学习如何使用方法的阶段,我正在努力。我正在做的其中一个教程要求我创建一个简单的评分系统。有人可以看看我的代码并给我一些建议,告诉我如何让它工作,让我知道我做错了什么。

import.java.util.scanner;
public class GameScorer
{
    int score;
    String result;
    public static void main (String[] args)
    {
        printHeader();
        getScore();
        setScore();

    }

    public void printHeader()
    {
        System.out.println("Game Scorer");
        System.out.println(" ");
        System.out.println(" ");
    }
    public void getScore()
    {
        Scanner in = new Scanner(System.in);
        System.out.println("Enter score :> ");
        score = in.nextLine();
    }

    public void setScore(int score)
    {
        if (score >= 100)
            System.out.println("Fantastic");
        else
            if (score >= 90)
                System.out.println("Brillaint");
            else
                if (score >= 60)
                    System.out.println("Good");
                else
                    if (score >= 40)
                        System.out.println("Bad");
                    else
                        if (score >= 0)
                            System.out.println("Awful");
    }
}

4 个答案:

答案 0 :(得分:2)

setScore(); - 无法调用匹配方法。您应该将参数传递给此方法,因为它的签名是:

public void setScore(int score)
                     ↑
     Expecting an argument of type int

main方法中执行:

setScore(score);

我建议你通过basic tutorial

另一方面,您应该使用static方法调用方法static

答案 1 :(得分:0)

首先,将参数传递给setScore(),如:

setScore(score)

接下来,使方法getScore()setScore(int sth) - 静态。你不能从静态方法中调用非静态方法(你的main方法是静态)。只需在方法声明中加上static

public static void printHeader()
{
    ...
}
public static void getScore()
{
    ...
}    
public static void setScore(int score) {
...
}

答案 2 :(得分:0)

如果你还没有在java中学习过参数。这个东西只是另一个词 在 - 的里面 ()。我强烈推荐这个video

如果您已经了解了这些,那么您只是犯了一个简单的错误。当你调用方法时 setScore(int score),该方法需要int。这就是您需要将setScore();更改为setScore(score);

的原因

答案 3 :(得分:0)

这个简单的例子实际上有许多不正确和令人困惑的部分:

main方法无法看到任何其他方法 - main是静态的(所有GameScorer类实例共有和共享)和printHeader(); getScore(); setScore();不是 - 它们是实例方法 - 这些是特定于GameScorer类的每个实例中的数据。

因为main方法是静态的,并且您在GameScorer中声明的变量不是静态的,所以它们对main不可见。

因为其他方法不是静态的,所以他们可以看到变量得分和结果。

您对得分变量的使用也不一致,因为您在GameScorer类中有一个而且有一个作为参数(这是合法的,但却导致您的混淆)。

您将需要了解更多关于静态意义,对象是什么以及对象实例(以及实例变量和方法)与类的不同之处...

代码可能会说明最好...... 有很多方法可以解决这个问题,

一种方法是(采用静态方法):

import java.util.Scanner;

public class GameScorer {
    private static int score;

    public static void main(String[] args) {
        printHeader();
        getScore();
        setScore();
    }

    private static void printHeader() {
        System.out.println("Game Scorer");
        System.out.println(" ");
        System.out.println(" ");
    }

    private static void getScore() {
        Scanner in = new Scanner(System.in);
        System.out.println("Enter score :> ");
        String input = in.nextLine();
        score = Integer.parseInt(input);
    }

    private static void setScore() {
        if (score >= 100)
            System.out.println("Fantastic");
        else if (score >= 90)
            System.out.println("Brillaint");
        else if (score >= 60)
            System.out.println("Good");
        else if (score >= 40)
            System.out.println("Bad");
        else if (score >= 0)
            System.out.println("Awful");
    }
}

另一个(拥抱对象和实例方法):

import java.util.Scanner;

public class GameScorer {
    private int score;

    public static void main(String[] args) {
        GameScorer gs = new GameScorer();
        gs.printHeader();
        gs.getScore();
        gs.setScore();
    }

    private void printHeader() {
        System.out.println("Game Scorer");
        System.out.println(" ");
        System.out.println(" ");
    }

    private void getScore() {
        Scanner in = new Scanner(System.in);
        System.out.println("Enter score :> ");
        String input = in.nextLine();
        score = Integer.parseInt(input);
    }

    private void setScore() {
        if (score >= 100)
            System.out.println("Fantastic");
        else if (score >= 90)
            System.out.println("Brillaint");
        else if (score >= 60)
            System.out.println("Good");
        else if (score >= 40)
            System.out.println("Bad");
        else if (score >= 0)
            System.out.println("Awful");
    }
}