【问题标题】:Java errors with creating function创建函数时出现 Java 错误
【发布时间】:2013-11-16 09:39:17
【问题描述】:

我创建了一个应该创建 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加一,剑的实际创建将在稍后出现: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,所以我不知道问题出在哪里了......非常感谢您的建议!

【问题讨论】:

  • 我相信你知道如何编写一个 java 程序,但你可能没有注意到你试图在 main() 中嵌套另一个函数

标签: java function


【解决方案1】:

试试这个

在 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());
    }
}

【讨论】:

  • 不要用“_”命名变量,使用 this.name = name!
  • @ThomasUhrig 更改为符合 sun 的官方风格指南。也就是说,有很多风格指南提出了不同的建议。
  • 我不知道任何建议“_”的 Java 风格指南;)但是,+1。
【解决方案2】:

我不确定你想要什么,像这样?

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++;
    }

}

【讨论】:

  • 是的,我只是在试验 Java,并想创建一个让我 newSword(nameSword, damageSword) 的函数,只是为了它的见鬼 xD 所以当我像基于文本的 rpg 一样创建时,可以轻松创建更多一把剑......编辑:我刚刚尝试了你的代码,我仍然得到同样的错误,可能是设置的东西还是什么?我正在 Linux Mint 上运行 Eclipse……也许这会有所帮助。
  • 我刚试过你的代码,我仍然得到同样的错误,可能是设置的问题还是什么?我正在 Linux Mint 上运行 Eclipse……也许这会有所帮助。
【解决方案3】:

也许这会有所帮助。

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 文件夹中的 Swords

【讨论】:

  • 我只是不断收到错误,您的代码也是如此......我认为这是我的系统的问题,我正在运行 Linux,所以也许有路径??
  • 尝试一个简单的hello world程序
  • @user2998976 - 不,他的代码中有语法错误(numberOfSwords 需要 static 修饰符)。
  • 大声笑。感谢您的提醒。有点忘记了这一点。我的错。
  • 修复了一个错误 ^ ^ 但是为什么它需要是静态的,这意味着什么?
【解决方案4】:

确保您的 JAVA_HOME/JDK 引用有效路径。当没有找到有效的 java 时,它会给出 java.lang 相关的错误。

【讨论】:

    【解决方案5】:

    你的代码主要有2个问题:

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

    接下来,numberOfSwords 在 main() 方法中被声明和初始化,所以它是一个局部变量。您需要将其设为全局才能从您的 newSword() 方法访问它。

    以下代码 sn-p 在我的 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!");
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2013-11-13
      • 1970-01-01
      • 2020-01-12
      • 1970-01-01
      • 1970-01-01
      • 2022-11-25
      • 2023-03-09
      • 1970-01-01
      • 2019-05-03
      相关资源
      最近更新 更多