我正在自学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");
}
}
答案 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");
}
}