Java 简单的评分系统和方法
我正在自学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();
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");
}
}