2014-10-07 292 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);