【问题标题】:Java Beginner, Class Constructor error, no arguments foundJava 初学者,类构造函数错误,未找到参数
【发布时间】:2014-01-23 18:56:16
【问题描述】:

我正在尝试使用基本的 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");
    }
}

【问题讨论】:

    标签: java constructor compiler-errors


    【解决方案1】:

    您的 Dice 构造函数接受 2 个整数作为参数。您试图在不提供这些参数的情况下调用构造函数。要么提供这些参数,要么创建一个不带参数的构造函数。

    【讨论】:

      【解决方案2】:

      您创建的唯一构造函数需要 2 个参数

      public Dice (int p1d6, int p2d6)
      {
          this.p1d6 = p1d6;
          this.p2d6 = p2d6;
      }
      

      您正在尝试使用 0 个参数创建一个 Dice 对象

      Dice di = new Dice();
      

      有两种解决方案,首先,你可以改变你调用构造函数的方式。

      Dice di = new Dice(1, 2);
      

      其次,您可以在 Dice 类中创建一个接受 0 个参数的构造函数。

      public Dice()
      {
      }
      

      【讨论】:

        【解决方案3】:

        调用无参数构造函数

            //initiate constructor for Dice class
            Dice di = new Dice();
        

        当您声明唯一的构造函数需要参数时出现问题:

            public Dice (int p1d6, int p2d6)
        

        【讨论】:

          猜你喜欢
          • 2016-07-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-02-03
          • 1970-01-01
          • 2022-11-03
          • 2013-09-05
          相关资源
          最近更新 更多