构造函数(构造函数名称)未定义
问题描述:
我正在尝试创建一个代码,以便最终能够根据用户输入的尺寸计算矩形的面积和周长。到目前为止,当我尝试调用我的矩形类来创建一个新的矩形时,编译器说矩形构造函数是未定义的。构造函数(构造函数名称)未定义
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中)是未定义”
答
的错误,因为编译器已声明 - 你已经声明了一个构造函数,需要两个int
参数,但试图使用两个String
创建rectangle
。这些类型不兼容。您应该使用扫描仪读取int
或使用Integer
类中的其中一个实用方法将String
转换为int
或Integer
。您还应该了解编码标准,如大写的类名。
答
充分利用rectangle
类private
并且每个public
类通常需要在它自己的可编译文件。
也是youy定义构造函数接受int
但你逝去的String
考虑使用Integer.parse (input1);
答
首先,您应该使用正确的Java约定。这意味着类型名称是PascalCase
,变量/方法名称是camelCase
。
您已为rectangle
创建了一个构造函数,它需要两个int
s,但是您传递了两个String
s。 Scanner
类有一个便捷的方法,用于从输入中获取int
:Scanner#nextInt
。
你应该重构你的代码,这样input1
和input2
是int
类型:
Scanner scanner = new Scanner(System.in);
int input1 = scanner.nextInt();
int input2 = scanner.nextInt();
rectangle first = new rectangle(input1, input2);
你的构造函数接受'int'但你用'String'参数调用它。 – Voicu 2014-10-07 00:45:34