2011-12-11 46 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:我从来不知道!让我更新我的答案。 –