1

所以我正在制作一个足球游戏程序,最后我希望它看起来像这样, http: //i.imgur.com/qFaUrKv.png

我无法在我的 handleTeamScoring() 方法中引用我的 getChoice() 方法。在该方法的 .getscore 部分中,我在选择、得分、footballTeam1、footballTeam2 和 FootballTeam 上获得了红线。

为什么是这样?我如何参考其他方法?任何帮助表示赞赏,谢谢。这是我的代码。https://gist.github.com/anonymous/beec75b6361ff1fcbc28

 package footballgame;

 import java.util.Scanner;

 public class FootballGame {

static Scanner keyboard = new Scanner(System.in);

public static void main(String[] args) {
    String choice;
    Scanner keyboard = new Scanner(System.in);
    String footballTeam1;
    String footballTeam2;

    System.out.print("Enter a name for a team:");
    footballTeam1 = keyboard.nextLine();
    System.out.print("Enter a name for another team:");
    footballTeam2 = keyboard.nextLine();

    System.out.println("Game Score:");
    System.out.println(footballTeam1 + ":0");
    System.out.println(footballTeam2 + ":0");

    choice = getMenuChoice(footballTeam1, footballTeam2);
}

public static String getMenuChoice(String footballTeam1, String footballTeam2) {
    String choice = "";
    String input;


    do {
        System.out.println("Select an option:");
        System.out.println("A:" + footballTeam1 + " scored");
        System.out.println("B:" + footballTeam2 + " scored");
        System.out.println("C: game ended.");
        System.out.println("?:");
        input = keyboard.nextLine();
        if (input.equalsIgnoreCase("A")) {
            choice = (footballTeam1);
        } else if (input.equalsIgnoreCase("B")) {
            choice = (footballTeam2);
        } else if (input.equalsIgnoreCase("C")) {
            choice = ("Game over!");
        }



    } while (!input.equals("A") && !input.equals("B") && !input.equals("C"));
    return choice;

}
 public static int handleTeamScore(int footballTeam) {

   do {
    System.out.println("How many points were scored by " + choice);
    int Keyboard = keyboard.nextInt();

  if (points == 1) {
      return footballTeam; }
  if (points == 2) {
      return footballTeam; }
  if (points == 3) {
      return footballTeam; }
  if (points == 6) {
      return footballTeam; }
   } while ( footballTeam != 1 || footballTeam != 2 || footballTeam != 3 || footballTeam != 6); {
}
    System.out.println("Game Score: ");       
    System.out.println(footballTeam1 + ": " + FootballTeam.getScore());
    System.out.println(footballTeam2 + ": " + FootballTeam.getScore());
    return footballTeam;






}
}

这是我的另一堂课。

public class FootballTeam {

private String name;
private int score;
public static int TOUCHDOWN = 6;
public static int FIELD_GOAL = 3;
public static int SAFETY = 2;
public static int TWO_POINT_CONVERSION = 2;
public static int EXTRA_POINT = 1;

public FootballTeam(String name, int score) {
    this.name = name;
    this.score = score;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public int getScore() {
    return score;
}

public void setScore(int score) {
    this.score = score;
}

public boolean addScore(int points) {
    if (points == TOUCHDOWN || points == FIELD_GOAL || points == SAFETY || points == TWO_POINT_CONVERSION || points == EXTRA_POINT) {
        score = points + score;
        return true;
    } else {
        return false;
    }

}
 }
4

2 回答 2

0

为了使用其中一种方法,您需要创建该类的一个对象FotballTeam

FootballTeam team = new FootballTeam(fotballTeam1, 0);创建一个名称"Sweden"和得分为 3 的团队并将其存储在变量中。

然后你可以使用这个变量并调用team.getScore();

这将向您展示如何创建FootballTeam和使用对象的基础知识:

System.out.print("Enter a name for a team:");
footballTeam1 = keyboard.nextLine();
System.out.print("Enter a name for another team:");
footballTeam2 = keyboard.nextLine();

FootballTeam team1 = new FootballTeam(footballTeam1, 0);
FootballTeam team2 = new FootballTeam(footballTeam2, 0);
System.out.println("Game Score:");
System.out.println(team1.getName() + ":" + team1.getScore());
System.out.println(team2.getName() + ":" + team2.getScore());

最好将此变量存储在您的类中(而不是方法中),以便您可以在任何地方访问它。

FotballTeam.getScore() 尝试像使用静态方法一样使用该方法,但事实并非如此。阅读此处了解静态和非静态方法之间的区别

您可能还想阅读Sun 的关于类和对象的 Java 教程

于 2013-11-08T23:03:42.357 回答
0

只需尝试将您的局部变量(在方法开始时出生并在方法结束时死亡)声明为global,这意味着您可以使用它们任何非静态方法。通过全局变量,我的意思是像 Scanner 类的“键盘”对象。删除方法的静态语句,创建一个名为“choice”的非静态字符串。所以你会看到你可以在你的方法中使用这些字段。

于 2013-11-08T23:17:38.633 回答