Java 简单的评分系统和方法

Java 简单的评分系统和方法,java,methods,Java,Methods,我正在自学Java,已经到了学习如何使用方法的阶段,我正在努力。我正在做的一个教程要求我创建一个简单的评分系统。请有人看看我的代码,给我一些建议,如何让它工作,让我知道我做错了什么 import.java.util.scanner; public class GameScorer { int score; String result; public static void main (String[] args) { printHeader();

我正在自学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");
    }
}
setScore()-没有要调用的匹配方法。您应该为此方法传递一个参数,因为它的签名是:

public void setScore(int score)
                     ↑
     Expecting an argument of type int
main
方法中,执行以下操作:

setScore(score);
我建议你通过考试


另一件事,当从
静态方法调用方法时,应使方法
静态。

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

setScore(score)
接下来,将方法
getScore()
setScore(int sth)
设为静态。您不能从静态方法调用非静态方法(您的
main
方法是static)。只需在方法声明中添加一个单词
static

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

如果您还没有学习java中的参数。只是对这些东西的另一个说法 在()内。我强烈建议:

如果你已经了解了这些,那么你只是犯了一个简单的错误。当您调用该方法时
setScore(int-score)
,该方法期望接受
int
。这就是为什么需要更改
setScore()
设置核心(分数)

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

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

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

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

您在使用score变量时也不一致,因为GameScorer类中有一个变量,另一个作为参数(这是合法的,但会导致您的混淆)

您将想了解更多关于静态的含义、对象是什么以及对象的实例(以及实例变量和方法)与类的区别

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

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

另一个(包括对象和实例方法):


您可以告诉我们您做错了什么,我们会帮助您修复。告诉我们为什么上面的代码会困扰您。首先,
score
的类型是
int
Scanner。nextLine()
返回
String
。您需要执行类似于
score=Integer.parseInt(in.nextLine())的操作@zero\u dev或nextInt()谢谢你这段视频帮助我理解了很多!
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");
    }
}