创建函数时出现Java错误

时间:2013-11-16 09:39:17

标签: java function

我创建了一个应该创建Swords的类,但我只是遇到了一堆错误......

package swords;

public class Sword {

public static void main(String [ ] args){

    public int numberOfSwords=0;

    public static void newSword(String nameSword, int damageSword){
        numberOfSwords++;

    }
  }
}

我想,当我输入newSword(Overpowered Sword, 1000000)时,将int numberOfSwords增加1,剑的实际创建将在稍后出现:D

但是我遇到了很多错误:

package swords; - 无法解析java.lang.Object类型。它是从所需的.class文件间接引用的。

public class Sword { - 默认构造函数未定义隐式超级构造函数Object()。必须定义显式构造函数

public static void main(String [ ] args){ - 字符串无法解析为类型

public int numberOfSwords=0; - 参数numberOfSwords的非法修饰符;只允许决赛

public static void newSword(String nameSword, int damageSword){处的最终错误 - 此行的多个标记      - 令牌“,”的语法错误;预期      - 令牌上的语法错误“(”,;;      - void是变量newSword的无效类型      - 无法将字符串解析为类型      - 令牌上的语法错误“)”,;预期

我希望你能帮助我!

编辑:我正在运行Linux Mint,所以我不知道它是否可能是我的系统的东西,因为我尝试了给定的代码,但得到相同的错误!我正在调查^ ^

编辑2:我刚刚运行了一个命令告诉我我没有安装JDK,我想我发现了问题:P我将来会更加关注需求,对不起......

编辑3:显然我安装了JDK,所以我不知道问题是什么...建议非常感谢!

5 个答案:

答案 0 :(得分:2)

试试这个

在Sword.Java中

public class Sword{
    public Sword(string name, int damage){
        this.name = name;
        this.damage = damage;
        ++swordsCreated;
    }
    public string getName(){ return name; }
    public int getDamage(){ return damage; }

    private string name;
    private int damage;

    public static int getCountOfSwordsCreated(){ return countOfSwordsCreated; }
    private static int countOfSwordsCreated;

}

在Game.java中

public class Game{
    public static void main(string [] args)
    {
        Sword mySword = new Sword("Overpowered Sword", 1000000);

        System.out.println(mySword.getName());
    }
}

答案 1 :(得分:1)

我不确定你想要什么,这样的事情?

package swords;

public class Sword {

    public static int numberOfSwords = 0;

    public static void main(String[] args) {
        newSword("Overpowered Sword", 1000000);
    }

    public static void newSword(String nameSword, int damageSword) {
        numberOfSwords++;
    }

}

答案 2 :(得分:0)

也许这会有所帮助。

package swords;

class Sword {
    private static int numberOfSwords = 0;

    public static void main(String[] args) {
        newSword("Overpowered Sword", 100);
    }

    public static void newSword(String nameSword, int damageSword) {
        numberOfSwords++;
    }
}

注意:

将变量保密并将函数公开是一种很好的做法。因此,公共函数是访问变量的唯一可能方式,从而确保安全性。

确保将代码保存为剑文件夹中的Sword.java

答案 3 :(得分:0)

您的代码主要有两个问题:

首先,您尝试将long值传递给函数的整数参数。

接下来,在main()方法中声明并初始化numberOfSwords,因此它是一个局部变量。您需要将其设置为全局,以便从newSword()方法访问它。

以下代码段在我的NetBeans IDE 7.3中完美运行。我认为这对你有用。

快乐编码!!! :):)

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package sword;

/**
*
* @author Jack Sparrow
*/
public class Sword {

/**
 * @param args the command line arguments
 * 
 */

public static void main(String[] args) {
    // TODO code application logic here
     newSword("Overpowered Sword",1000000); 

}

public static void newSword(String nameSword, long damageSword)
    {
        int numberOfSwords = 0;
        if ((nameSword == ("Overpowered Sword")) && (damageSword == 1000000))
        {
            numberOfSwords++;
            System.out.println(numberOfSwords);
        }
        else
        {
            System.out.println("Error!");
        }
    }
}

答案 4 :(得分:0)

确保您的JAVA_HOME / JDK引用有效路径。如果找不到有效的java,则会产生与java.lang相关的错误。