java - 无法解析为 Java 程序中的变量

标签 java

当我编译这段代码时,我得到的唯一错误是“winner cannot be resolved to variable”或“token “winner”的语法错误,删除此 token” 我明白这个错误与我的 if-else 语句有关,但我不知道我做错了什么,或者我只是做错了。有没有更好的方法来在具有随机统计数据的两支球队之间取得胜利?

public class Team {

    /**
     * The name of the team.
     */
    public String name;

    /**
     * The location of the team.
     */
    public String location;

    /**
     * The offensive strength of the team.
     */
    public double offense;

    /**
     * The defensive strength of the team.
     */
    public double defense;

    /**
     * Create a team with specified name and location, and with offense and defense capabilities
     * randomly initialized using the luck() method.
     *
     * @param name
     * @param location
     */
    public Team(String name, String location, double offense, double defense) {
      this.name = name;
      this.location = location;
      this.offense = luck();
      this.defense = luck();
    }     

    /**
     * The luck() method returns a random value between 0 and 1, using Math.random().
     * 
     * @returns a real value in range [0,1]
     */
    public double luck() {
        return Math.random();
    }

    /**
     * Run a competition against the specified visiting team
     * 
     * @param other the team to play against
     * @returns the winner team
     */
    Team play(Team visitor) {
        double home = (this.offense + this.defense + 0.2) * this.luck();
        double away = (visitor.offense + visitor.defense) * visitor.luck();
        if (home > away) {

        }
        else {
          away = winner;
        }
        return winner;  
    }

    /**
     * Run a competition between two teams specified on standard input.
     * Print statistics of the winner.
     * <p>
     * Each team is read in the following format :
     * <pre>
     * &lt;name&gt; 
     * &lt;location&gt;
     * </pre>
     * (Note that name and location should be separate lines for each team)
     * 
     * @param args can be ignored.
     */
    public static void main(String[] args) {
        // Be sure to follow the same printing command to ask user
        // for name and location of two teams (e.g, home and away)
        System.out.println("Enter name and location for home team (on separate lines)");
        // Get input from user for home team.
        // Create a home team object with the given data.
        Scanner in = new Scanner(System.in);
        team = in.nextLine();
        location = in.nextLine();
        Team home = new Team(name, location, offense, defense);
        System.out.println("Enter name and location for away team (on separate lines)");
        // Get input from user for away team.
        // Create an away team object with the given data.
        team = in.nextLine();
        location = in.nextLine();
        Team away = new Team(name, location, offense, defense);
        // Print out home team information.
        System.out.println("Home team is: " + home.name + " from " + home.location + " rated <home_team_offense> (offense) + <home_team_defense> (defense)");
        // Print out away team information.

        System.out.println("Away team is: " + away.name + " from " + away.location + " rated <away_team_offense> (offense) + <away_team_defense> (defense)");

        // Call the home team's play() method with the away team as visitor parameter.
        Team winner = home.play(away);
        // Print out the winner.
        System.out.println("Winner is:" winner.name + "from " + winner.location + " rated <winner_team_offense> (offense) + <winner_team_defense> (defense)");
        // (be sure to adhere to the format described below)
    }
}

最佳答案

您没有声明获胜者。像这样更改 play() 方法

/**
 * Run a competition against the specified visiting team
 * 
 * @param other the team to play against
 * @returns the winner team
 */
Team play(Team visitor) {
    double home = (this.offense + this.defense + 0.2) * this.luck();
    double away = (visitor.offense + visitor.defense) * visitor.luck();
    if (home > away) {
      return this;
    }
    else {
      return visitor;
    }
}

或者如果您只想返回一个(这是个好主意)-

/**
 * Run a competition against the specified visiting team
 * 
 * @param other the team to play against
 * @returns the winner team
 */
Team play(Team visitor) {
    double home = (this.offense + this.defense + 0.2) * this.luck();
    double away = (visitor.offense + visitor.defense) * visitor.luck();

    // depending on the score, return winning team. 
    return (home > away)? this : visitor;
}

最后,您可能想考虑如果得分相同会发生什么,即 home == away。如果分数相等,当前代码将使 visitor 获胜。

关于java - 无法解析为 Java 程序中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18816873/

相关文章:

java - 使用 java 从组合框 selenium 驱动程序中选择一个项目

java - 在网站中嵌入 Java 小程序

java - 如何在java中编译包?

java - 在java中使用不同类型的setter

java - 如何设置 JFace ListViewer 大小?

java - 我应该使用哪个 CAS 服务器?

java - Android:将搜索 Activity 设为单顶

java - Spring DeferredResult setResult 导致 404

java - 在单个 Weblogic 域中的同一集群中部署两个 Spring 批处理应用程序?

java - WebSphere Liberty Profile Verbose Class Logging - 它的输出在哪里?