构造函数(构造函数名称)未定义

时间:2014-10-07 00:44:16

标签: java constructor

我正在尝试创建一个代码,以便最终能够根据用户输入计算矩形的面积和周长。截至目前,当我尝试调用我的矩形类来创建一个新矩形时,编译器说矩形构造函数是未定义的。

import java.util.Scanner;

public class rectangles {

  public class rectangle {
    public rectangle() {}
    public int length;
    public int width;
    public rectangle(int len, int wid) {
      length = len;
      width = wid;

    } 

  }

  public void runner() {

    Scanner scanner = new Scanner(System.in);
    String input1 = scanner.nextLine();
    String input2 = scanner.nextLine();
    rectangle first = new rectangle(input1, input2); //Error here
    System.out.println(first);
    scanner.close();
  }

  public static void main(String[] args) {}
}

错误是“构造函数rectangles.rectangle(java.lang.String,java.lang.String)未定义”

3 个答案:

答案 0 :(得分:0)

制作rectangleprivate,每个public类通常需要在自己的可编辑文件中。

您定义的构造函数也需int,但您传递String

考虑使用Integer.parse (input1);

答案 1 :(得分:0)

错误就像编译器所说的那样 - 你已经声明了一个带有两个int参数的构造函数,但尝试使用两个rectangle来创建一个String。这些类型是不兼容的。您应该使用扫描程序阅读int或使用Integer类中的一种实用程序方法将String转换为intInteger 。您还应该了解编码标准,例如大写的类名。

答案 2 :(得分:0)

首先,您应该使用正确的Java约定。这意味着类型名称为PascalCase,变量/方法名称为camelCase

您已经为rectangle创建了一个构造函数,它需要两个int,但是您传递了两个StringScanner类有一种方便的方法可以从输入中获取intScanner#nextInt

您应该重构代码,以便input1input2int类型:

Scanner scanner = new Scanner(System.in);
int input1 = scanner.nextInt();
int input2 = scanner.nextInt();
rectangle first = new rectangle(input1, input2);