【问题标题】:Java Game error (Array, this. , methods)Java 游戏错误(数组、this.、方法)
【发布时间】:2010-12-06 00:34:48
【问题描述】:
import java.util.Scanner;

public class Game

{

    private String startYorN;
    private int generateTestValues;
    private int rows;
    private int cols;
    private int minCanisters;
    private int maxCanisters;
    private int numOfDarkies;
    private int minimumLifePoints;
    private String name;
    private String type1;
    private int sPosition1, sPosition2;
    private int tPosition1, tPosition2;
    private int iLifePoints;
    Scanner scan = new Scanner(System.in);

    public void gameSetting()
    {

        System.out.print ("Would you like to play? (y/n):");
        startYorN = scan.nextLine();
        //if (startYorN =="n" || startYorN =="N")
        //quit the game(?)

        System.out.print ("Would you want to generate test values for world? 1- yes: ");
        generateTestValues =scan.nextInt();
        System.out.println ("");

        System.out.print ("Enter a number of rows for world: ");
        rows = scan.nextInt ();
        System.out.println ("");

        System.out.print ("Enter a number of cols for world: ");
        cols = scan.nextInt ();
        System.out.println ("");

        System.out.print ("Enter minimum energy canisters in each planet: ");
        minCanisters = scan.nextInt ();
        System.out.println ("");

        System.out.print ("Enter maximum energy canisters in each planet: ");
        maxCanisters = scan.nextInt ();
        System.out.println ("");

        System.out.print ("Enter number of planets with darkies: ");
        numOfDarkies = scan.nextInt ();
        System.out.println ("");

        System.out.print ("Enter minimum life points for players to replenish: ");
        minimumLifePoints = scan.nextInt ();
        System.out.print ("\n");
        World w = new World(rows,cols,minCanisters, maxCanisters, numOfDarkies);
        w.display();

        Alien[] alien = new Alien [2];

        for (int i = 0; i<=1;i++)
        {   
            name = scan.nextLine ();
            System.out.print ("\n");
            System.out.print ("Enter name for player #" + i + ": ");
            name = scan.nextLine ();

            System.out.print ("Enter kind Player #" + i + ", (n- naive, g- greedy, a- aggressive, u- naive user, w-aggressive user): ");
            type = scan.nextLine ();

            System.out.print ("Enter: row (space) column for start position for player #" + i + ": ");
            sPosition1 = scan.nextInt ();
            sPosition2 = scan.nextInt ();

            System.out.print ("Enter: row (space) column for target position for player #" + i + ": ");
            tPosition1 = scan.nextInt ();
            tPosition2 = scan.nextInt ();

            System.out.print ("Enter initial life points for player #" + i + ": ");
            iLifePoints = scan.nextInt ();
        }
    }
    public void setInfo(Alien alien[i], String name, String type, int sPosition1, int sPosition2,
                        int tPosition1, int tPosition2, int iLifePoints)
    {
        this.name = name;
        this.type = type;
        this.sPosition1 = sPosition1;
        this.sPosition2 = sPosition2;
        this.tPosition1 = tPosition1;
        this.tPosition2 = tPosition2;
        this.iLifePoints = iLifePoints;
    }
}

我知道 setInfo 方法有问题,可能还有 gameSetting 方法。我想从两个玩家(外星人)那里得到信息。有人可以告诉我该怎么做吗?

【问题讨论】:

  • 您遇到什么错误?这是完整的代码吗?我很困惑:(
  • 你在 setInfo 中使用 Alien alien[i] 的位置
  • 我们需要更多代码和/或错误来帮助您。
  • 我收到了很多 ']' 预期,';' public void setInfo 方法中预期的、非法的类型开始和 预期的错误。这只是整个课程的一部分,但我可以编辑和发布整个内容。
  • 尝试粘贴整个堆栈跟踪。如果你得到 ] 和 ;预期的错误,可能是您没有关闭数组类型并且分号中缺少一行。检查 IDE 中的代码,它应该标有错误发生的行。

标签: java arrays methods


【解决方案1】:

一个问题是你应该在你的setInfo() 参数列表中删除Alien alien[i] 中的i。您可能还想考虑将它从参数列表中完全删除,因为您不使用它,或者可能不使用它是您需要修复的另一个错误。

您还需要将变量type1 的声明改为type,因为这是您在后面几个地方使用的。

修复这两个问题可以消除除扫描仪/外星人/世界的“找不到类”之外的所有编译器错误,但您有望修复这些错误。见http://ideone.com/PNqb2

【讨论】:

    【解决方案2】:

    试试这个:

    public void setInfo(Alien alien[], String name, String type, int sPosition1, int
    sPosition2, int tPosition1, int tPosition2, int iLifePoints)
    

    您试图从数组中传递特定的 Alien 实例,但 Java 不允许您这样做。调用 setInfo() 时,只需访问正确的 Alien 实例并将其传递。

    此外,您应该添加有关错误的更多信息,最好是堆栈跟踪。

    【讨论】:

      【解决方案3】:

      从 setInfo 中移除“Alien alien[i]”。它没用。如果您正在使用它,请弄清楚它是什么。如果是 Alien 数组,则应该是 Alien[] alien,如果是单个 Alien,则应该是 Alien alien。如果它是实例数组的索引,它应该只是 int alien

      另外,使用 (position1, position2) 会很快变得混乱。坚持使用 row,col 否则你会忘记它们的顺序(注意 (x,y) 和 (row, col) 是相反的顺序。并且 (width,height) 与 (x,y) 相同)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-02-10
        • 2012-01-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-02-28
        相关资源
        最近更新 更多