Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 未正确应用主方法构造函数_Java - Fatal编程技术网

Java 未正确应用主方法构造函数

Java 未正确应用主方法构造函数,java,Java,我很难实施我的主要课程来正常工作。我收到一个编译器错误,它说“类inc1中的构造函数inc1不能应用于给定的类型;”,它说“必需:inc1\u dice,inc1\u player”。我相当确定这与inc1类中的构造函数具有“(inc1\u dice dice,inc1\u player)”这一事实有关,但我不知道如何调整我的主类来解决这个问题 如果有人知道怎么做,请让我知道,我将非常感谢 主要类别: public class inc1_main { public static void

我很难实施我的主要课程来正常工作。我收到一个编译器错误,它说“
类inc1中的构造函数inc1不能应用于给定的类型;
”,它说“
必需:inc1\u dice,inc1\u player
”。我相当确定这与
inc1
类中的构造函数具有“
(inc1\u dice dice,inc1\u player)
”这一事实有关,但我不知道如何调整我的主类来解决这个问题

如果有人知道怎么做,请让我知道,我将非常感谢

主要类别:

public class inc1_main
{
    public static void main(String[] args)
    {
        inc1 inc = new inc1();
        inc.go();
    }
}
游戏课的一部分:

public class inc1{
  private inc1_player player;
  private inc1_dice dice;

  public inc1(inc1_dice dice, inc1_player player){
     this.dice = dice;
     this.player = player;
  }

在Java中,默认情况下,每个类都有一个默认的ctor,该ctor不接收任何参数

当您创建了一个接收参数的ctor时,在您定义一个参数之前,您再也不能期望调用一个没有参数的ctor了

因此,在main()中,应该调用

    inc1 inc = new inc1(-args-);
或者,创建一个不接收参数的新ctor


希望这对…有所帮助。

您的inc1类中的构造函数中有参数。一旦创建了包含参数的构造函数,Java编译器将不会自动为您生成默认构造函数。(这是一个不接受参数参数的构造函数)

所以你要调用的inc1构造函数,有两个参数。因此,在主类中,您需要创建一个inc1_骰子和一个inc1_玩家对象,设置它们,然后将它们传递给构造函数。

而不是
inc1 inc=new inc1()

你需要一些类似的东西

inc1 inc=新的inc1(骰子,玩家)


其中,
dice
inc1\u dice
的实例,
player
inc1\u player
的实例。或者,将默认构造函数添加到类
inc1

类名称应以大写字母开头,这是Java约定。 因此,您的类是Inc1_main和Inc1。如果您遵循标准准则(至少大多数准则),将有助于检查代码的任何人


关于您的问题,当您调用构造函数时,必须传递2个参数,因为您已经在类代码中指定了它们。因此,代码new inc1()应该更改为new inc1(a,b),其中a和b是inc1_dice和inc1_player的实例。

您声明类的构造函数
inc1
需要两个参数来创建该类的实例:

inc1(inc1_骰子,inc1_玩家){…}

您没有提供自己的构造函数,不带任何参数:

inc1() {...}
public class inc1{
    private inc1_player player;
    private inc1_dice dice;

    public inc1(inc1_dice dice, inc1_player player){
       this.dice = dice;
       this.player = player;
    }

    public inc1() {
        // here are actions you want to perform when constructor
        // taking no arguments is called...
    }
}
这意味着您不能使用默认构造函数(构造函数不带参数)创建
inc1
的实例。原因是,如果您声明自己的构造函数,则无法使用默认构造函数创建类的实例,除非您提供自己的构造函数,且不带任何参数

总结一下我所说的,您需要首先创建
inc1_dice
inc1_player
的实例,以您声明的方式创建它们),或者“在运行中”创建这些类的实例:

或者第二种方式:

inc1 myObject = new inc1(new inc1_dice(), new inc1_player());
另一种可能性是在
inc1
类中准备自己的构造函数,该类不带任何参数:

inc1() {...}
public class inc1{
    private inc1_player player;
    private inc1_dice dice;

    public inc1(inc1_dice dice, inc1_player player){
       this.dice = dice;
       this.player = player;
    }

    public inc1() {
        // here are actions you want to perform when constructor
        // taking no arguments is called...
    }
}

顺便说一句,遵循Java命名约定是很好的——他们说应该用Java命名以大写字母开头的类(例如Inc1、Inc1Dice等)

如果一个方法(包括构造函数)被声明为使用参数,那么在调用它时必须提供它们
new inc1()
没有传递任何参数,因此会出现一个编译错误,告诉您需要添加什么(inc1_骰子和inc1_播放器)。@azurefrog好的,所以我将inc1_骰子、inc1_播放器添加到inc1 inc=new inc1();总的来说,它说找不到symbolWell,这是一个不同的问题。(另外,请不要问这个问题,直到你在谷歌上搜索了错误信息,至少阅读了规范的SO答案)当我这样做时(骰子,玩家),它说它找不到骰子和玩家symbols@destinycoots因为您必须在调用之前实例化它们。类似于
inc1_dice dice=newinc1_dice();inc1_播放器=新的inc1_播放器()当然假设你写了类
inc1\u dice
inc1\u player
。是的,我有它的类,我已经弄明白了。现在,当我运行main时,我得到了“线程中的异常”main“java.lang.OutOfMemoryError:java堆空间”知道这意味着什么吗?@destinycoots这意味着你的程序内存不足。例如,当您创建一个非常大的数组时,就会发生这种情况。仔细检查您的代码,您没有向我们展示
go()
方法的主体,也没有展示类
inc1\u dice
inc1\u player
。我创建了另一个问题来处理这个问题,因为我无法解决它。如果你愿意,请随意查看我的所有代码!好的,我现在已经解决了所有问题,没有编译器错误。但是当我运行main时,我得到了“线程中的异常”main“java.lang.OutOfMemoryError:java堆空间”知道这意味着什么吗?@DestinyCoots查看go()方法的代码(您的问题中没有包含该方法,而且您似乎需要在那里查找一个bug—它似乎不断地执行某种操作,直到内存不足时才会停止—但我们无法确定存在哪种bug,因为我们没有看到)。是的,这是一个无限的while循环。我已经完成了所有需要完成的方法,我只需要正确地组织它们,以使我的go方法工作。如果我想不出来,我会在另一个问题中解决kit,但感谢你在主要方面的帮助,并指出我的问题是go方法!@DestinyCoots很高兴我能祝你好运!好吧,我现在得到了编译器错误,但是当我运行时,我得到了“线程中的异常”main“java.lang.OutOfMemoryError:java堆空间”知道这意味着什么吗?它是
构造函数,不是
构造函数