2011-12-11 60 views
0

好吧,所以我知道這是一個noob問題,但我無法使此代碼正常工作。代碼應該做的是當你輸入半徑時給你直徑。我知道我的代碼可能被屠殺,但我做錯了什麼,爲什麼,因爲我試圖學習。在創建多個類時遇到問題

import java.util.Scanner; 

public class Circle{ 

Scanner dd = new Scanner(ystem.in); 

System.out.println("Whats is the radius?"); 
double r = dd.nextDouble(); 

public Circle(double r){ 

    radius = r; 
} 

public double diameter(){ 

    double d = radius * 2; 
    return d; 
} 
} 

public class Tester{ 

public static void main(String args[]){ 

    Circle cir1 = new Circle(35.5); 
    System.out.println(Circle.diameter) 
} 
} 
+1

這是什麼問題?是否有編譯器錯誤信息?它會崩潰嗎?它做錯了什麼嗎? –

+1

對不起,只有編譯器錯誤,我得到的是它不包含主類型 – John

+0

這是您在12月15日提出的問題的答案,因爲某些原因已經關閉。 [http://docs.oracle.com/javase/tutorial/java/concepts/](http://docs.oracle.com/javase/tutorial/java/concepts/) – Chucri

回答

1

您必須將代碼放在方法中。此塊將導致錯誤:

Scanner dd = new Scanner(System.in); 

System.out.println("Whats is the radius?"); 
double r = dd.nextDouble(); 

接下來,在你的主,你做圈cirl =新圈(35.5)和下一行,你叫Circle.diameter。你應該直接從你的新實例調用cirl.diameter()。

你可以嘗試這樣的事情,而不是

import java.util.Scanner; 

public class Circle{ 

    private double radius; 

    public Circle(double r){ 

     radius = r; 
    } 

    public double diameter(){ 

     double d = radius * 2; 
     return d; 
    } 

    public static void main(String args[]){ 

     Scanner dd = new Scanner(System.in); 

     System.out.println("Whats is the radius?"); 
     double r = dd.nextDouble(); 
     Circle cir1 = new Circle(r); 
     System.out.println(cir1.diameter()) 
    } 
} 
+0

當我運行這段代碼時,我只得到1個錯誤。變量cirl在cirl.diameter()中未解決() – John

+0

如果我告訴你答案,我能得到rep點嗎? :-) –

+0

我已經把l而不是1. – Francis

0

在同一個Java源文件中不能有多個public類。因此,要麼創建兩個源文件(每個類一個),或者在另一個類中定義一個類,例如:

public class Test { 

    static class Circle { 
     ... 
    } 

    ... 

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

有點不對,你不能再多而不是同一文件中的一個公開課。 –

+0

@AndrewFielden:我從來不知道!讓我更新我的答案。 –