我正在努力练习只使用基本的java概念编写一个简单的应用程序来加强这些在我的脑海里,我得到一个我似乎无法弄清楚的错误。我确信这对我来说是一些愚蠢的疏忽,或者也许是我在学习时还不知道的事情。任何帮助都将非常感谢!
这是我在尝试编译以下代码时得到的消息:
error: constructor Dice in class Dice cannot be applied to given types;
Dice di = new Dice();
^
required: int,int
found: no arguments
reason: actual and formal argument lists differ in length
3 errors
//import statements
import java.util.Arrays;
import java.util.Scanner;
import java.util.Random;
class Dice
{//Begin Dice Class
//initiate constructor for "Random" class
Random r = new Random();
//declare Dice class variables
int p1d6 = r.nextInt(6-0) + 1;
int p2d6 = r.nextInt(6-0) + 1;
//initiate class constructors
public Dice (int p1d6, int p2d6)
{
this.p1d6 = p1d6;
this.p2d6 = p2d6;
}
//create set and get methods for class variables
public void setP1d6(int p1d6)
{
this.p1d6 = p1d6;
}
public int getP1d6()
{
return p1d6;
}
public void setP2d6(int p2d6)
{
this.p2d6 = p2d6;
}
public int getP2d6()
{
return p2d6;
}
//toString method that outputs the class variables
//public String toString ()
//{
// return "P1D6: " + p1d6 + "\n" + "P2D6: " + p2d6 + "\n";
//}
}// End Dice Class
public class DiceGame2
{
public static void main( String ars[] )
{
//initiate constructor for Dice class
Dice di = new Dice();
System.out.println( "--- Welcome to the Dice Game v2! ---" ); // welcomes player
System.out.println("P1D6: " + di.getP1d6() + "\n");
System.out.println("P2D6: " + di.getP2d6() + "\n");
System.out.println("P1D6: " + di.getP1d6() + "\n");
System.out.println("P2D6: " + di.getP2d6() + "\n");
System.out.println("P1D6: " + di.getP1d6() + "\n");
System.out.println("P2D6: " + di.getP2d6() + "\n");
}
}
答案 0 :(得分:6)
你的Dice构造函数需要2个int作为参数。您试图在不提供这些参数的情况下调用构造函数。提供这些参数,或者创建一个不带参数的构造函数。
答案 1 :(得分:1)
您创建的唯一构造函数需要2个参数
public Dice (int p1d6, int p2d6)
{
this.p1d6 = p1d6;
this.p2d6 = p2d6;
}
您正在尝试使用0参数创建Dice对象
Dice di = new Dice();
有2个解决方案,首先,你可以改变你调用构造函数的方式。
Dice di = new Dice(1, 2);
其次,您可以在Dice类中创建一个带有0个参数的Constuctor。
public Dice()
{
}
答案 2 :(得分:0)
调用no-args构造函数
//initiate constructor for Dice class
Dice di = new Dice();
当您声明唯一的构造函数需要参数时,会出现问题:
public Dice (int p1d6, int p2d6)