我很难实现我的主要课程以正常工作。我收到编译错误,说“constructor inc1 in class inc1 cannot be applied to given types;
”,并说“required: inc1_dice,inc1_player
”。我相当肯定它与inc1
类中的构造函数具有“(inc1_dice dice, inc1_player player)
”的事实有关,但我无法弄清楚如何调整我的主类来解决问题。
如果有人知道该怎么做,请告诉我,我会非常感激!
主要课程:
public class inc1_main
{
public static void main(String[] args)
{
inc1 inc = new inc1();
inc.go();
}
}
Play类的一部分:
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;
}
答案 0 :(得分:0)
你的inc1类中的构造函数中包含参数。一旦创建了包含参数的构造函数,Java编译器就不会自动为您生成默认构造函数。 (这是一个不带参数参数的构造函数)
所以你试图调用的inc1构造函数,取两个参数。所以在你的主类中,你需要创建一个inc1_dice和一个inc1_player对象,设置它们,然后将它们传递给你的构造函数。
答案 1 :(得分:0)
inc1 inc = new inc1();
你需要一些东西
inc1 inc = new inc1(dice, player);
其中dice
是inc1_dice
的实例,而player
是inc1_player
的实例。或者,将默认构造函数添加到类inc1
。
答案 2 :(得分:0)
类名应以大写字母开头,它是Java惯例。 因此,您的类是 Inc1_main 和 Inc1 。如果您遵循标准指南(至少大多数指南)将帮助任何检查您的代码的人。
关于您的问题,当您调用构造函数时,您必须传递2个参数,因为您已在类代码中指定了它们。所以代码 new inc1()应该更改为 new Inc1(a,b),其中 a 和 b 是 Inc1_dice 和 Inc1_player 的实例。
答案 3 :(得分:0)
您声明类inc1
的构造函数需要两个参数来创建此类的实例:
inc1(inc1_dice dice, inc1_player player) {...}
并且您没有提供不带参数的构造函数:
inc1() {...}
这意味着您无法使用 默认构造函数 (构造函数不带参数)创建inc1
的实例。原因是,如果您声明自己的构造函数,则无法使用默认构造函数创建类的实例,除非您提供自己的构造函数不带参数。
总结我所说的内容,您需要首先按照您声明的方式创建inc1_dice
和inc1_player
的实例),或者“随时随地”创建这些类的实例:
inc1_dice dice = new inc1_dice();
inc1_player player = new inc1_player();
inc1 myObject = new inc1(dice, player);
或第二种方式:
inc1 myObject = new inc1(new inc1_dice(), new inc1_player());
另一种可能性是在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命名约定是好的 - 他们说你应该用大写字母(例如Inc1,Inc1Dice等)命名Java类
答案 4 :(得分:-1)
在Java中,每个类默认都有一个默认的ctor - 一个不接收args的。
当你创建一个接收args的ctor时,你不能再期望在没有args的情况下调用一个ctor,直到你定义一个。
因此,在你的main()中,你应该调用
inc1 inc = new inc1(-args-);
或者,创建一个不接受args的新ctor。
希望有帮助...