2016-05-17 81 views
-2

请考虑在同一个包中声明的以下两个Java类:为什么CircleTest类不能编译以及可以进行哪些更改以使其工作以及更改的原因。请帮助我,谢谢:)。为什么这个CircleTest类不会编译

编译时的错误是:它说CircleTest类必须定义它自己的文件,不解决环节不是字段,Circle.rad不可见,并且PI不解析为变量。

public class Circle { 
    private double rad; 
    static int count; 
    public Circle(double radius) { 
     this.rad = radius; 
     count++; 
    } 
    double circumf() { return 2 * PI * rad; } 
} 
public class CircleTest { 
    public static void main(String[] args) { 
     Circle diskA = new Circle(5); 
     Circle diskB = new Circle(3); 
     Circle diskC = diskA; 
     System.out.println("Circum A:" + diskA.circumf); 
     System.out.println("Area B:" + PI*diskB.rad*diskB.rad); 
    } 
} 
+0

大概你有编译错误 - 请张贴它们,并解释你不了解它们是什么。 –

+0

(我可以看到至少三个错误,但我希望它们基于错误消息是显而易见的......) –

+0

有多个错误。你正像一个变量一样访问'circumf',但这是一种方法。 “PI”是一个不存在的变量。 'rad'是私人的,但直接接受。 – SomeJavaGuy

回答

2

第一个问题:

radprivate,你将无法从您的测试类访问它。阅读关于access modifier

将其更改为类似于: public double rad;

或更好,但离开它私人和使用getter方法:

private double rad; 

public double getRad() { 
    return rad; 
} 

问题二:

System.out.println("Circum A:" + diskA.circumf); 

你试图调用一个方法所以这应该是:

System.out.println("Circum A:" + diskA.circumf()); 

第三问题em:

添加一个static import使用PI

import static java.lang.Math.PI; 

第四个问题:

正如@凯文 - esche提到:

由于CircleTestpublic它必须是在为了能够编译名为CircleTest.java文件。或者删除public标识。

+0

有一件事是不存在的,因为'CircleTest'是公开的,它必须位于一个名为'CircleTest.java'的文件中才能编译。或者删除公共标识符。 – SomeJavaGuy

+0

你说得对。错过了那一个。我会马上添加它。谢谢。 – Diyarbakir

+0

@Diyarbakir KevinEsche哇,非常感谢你们,现在对我来说很有意义:)。 –