2014-10-07 239 views
-1

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

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

你的构造函数接受'int'但你用'String'参数调用它。 – Voicu 2014-10-07 00:45:34

回答

0

的错误,因为编译器已声明 - 你已经声明了一个构造函数,需要两个int参数,但试图使用两个String创建rectangle。这些类型不兼容。您应该使用扫描仪读取int或使用Integer类中的其中一个实用方法将String转换为intInteger。您还应该了解编码标准,如大写的类名。

0

充分利用rectangleprivate并且每个public类通常需要在它自己的可编译文件。

也是youy定义构造函数接受int但你逝去的String

考虑使用Integer.parse (input1);

0

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

您已为rectangle创建了一个构造函数,它需要两个int s,但是您传递了两个String s。 Scanner类有一个便捷的方法,用于从输入中获取intScanner#nextInt

你应该重构你的代码,这样input1input2int类型:

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