Java Beginner,Class Constructor错误,未找到任何参数

时间:2014-01-23 18:56:16

标签: java constructor compiler-errors

我正在努力练习只使用基本的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");
    }
}

3 个答案:

答案 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)