java编程问题,,求高手帮忙解决下万分感谢,,程序能编译但运行不成功,,请高手指点下,程序如下

程序如下:
class Point {
double x;
double y;
Point(double x1,double y1) {
x = x1;
y = y1;
}

double getX() {
return x;
}
double getY() {
return y;
}
void setX(double i) {
x = i;
}
void setY(double i) {
y = i;
}
}

class Circle {
Point o;
double radius;
Circle(Point p,double r) {
o = p;
radius = r;
}
Circle(double r) {
Point o = new Point(0.0,0.0);
radius = r;
}
Point getO() {
return o;
}
void setO(double x,double y) {
o.setX(x);
o.setY(y);
}
double getRadius() {
return radius;
}
void setRadius(double r) {
radius = r;
}

boolean contains(Point p) {
double x = p.getX() - o.getX();
double y = p.getY() - o.getY();
if(x * x - y * y > radius * radius)
return false;
else return true;
}
double area() {
return 3.14 * radius * radius;
}
}

public class TestCircle {
public static void main(String[] args) {
Circle c1 = new Circle(new Point(1.0,2.0),2.0);
Circle c2 = new Circle(5.0);
System.out.println("c1 : (" + c1.getO().getX() + "," +
c1.getO().getY() + ")," + c1.getRadius());
System.out.println("c2 : (" + c2.getO().getX() + "," +
c2.getO().getY() + "," + c2.getRadius());
System.out.println("c1 area = " + c1.area());
System.out.println("c2 area = " + c2.area());
c1.setO(5,6);
c2.setRadius(9.0);
System.out.println("c1 : (" + c1.getO().getX() + "," +
c1.getO().getY() + "}," + c1.getRadius());
System.out.println("c2 : (" + c2.getO().getX() + "," +
c2.getO().getY() + "}," + c2.getRadius());
System.out.println("c1 area = " + c1.area());
System.out.println("c2 area = " + c2.area());

Point p1 = new Point(5.2,6.3);
System.out.println(c1.contains(p1));
System.out.println(c1.contains(new Point(10.0,9.0)));

}
}

第1个回答  2011-01-19
class Circle中的构造方法:
Circle(double r) {
Point o = new Point(0.0,0.0);
radius = r;
}

Point o = new Point(0.0,0.0);这句把前面的Point去掉,就可以了。或者更清楚地,把这句话改为this.o = new Point(0.0,0.0);

因为如果你加了这个Point,这句话的意思只是把构造方法中的这个局部变量o给赋值了,
而整个class中的变量Point o,这个o没有被初始化,指向null,所以在后面的getO()方法被调用的时候,返回的是这个class Circle的global变量o,其实没有被赋值,所以会出错,NullPointerException
第2个回答  2011-01-19
把构造函数Circle(double r) {
Point o = new Point(0.0,0.0);
radius = r;
}
的Point去掉就行了。。
改成
Circle(double r) {
o = new Point(0.0,0.0);
radius = r;
}本回答被提问者采纳
第3个回答  2011-01-19
请贴出错误信息。。。

JAVA程序设计 编译没错误 不可以运行,请高手指点一下
Java程序需要有一个主程序才能运行的,你的这个类中并没有定义主程序,所以编译成功,但是运行不了,IDE找不到你的main方法。在你的类中定义一个 public static void main(String[] args){ Database db = new Database ();db. OpenConn();String sql = "xxxx";\/\/此处根据你的需要写出相应...

...可刚让其运行就显示该程序已停止工作,请高手指点这是怎么回事。谢谢...
1、JVM虚拟机出现错误,即Java开发环境出现错误,与你的程序无关,解决办法:只能试着重新安装Java开发环境。2、出现RuntimeException,像NullPointerException、ArrayIndexOutOfBoundsException等等,这类的错误在编译时不显示,运行才可能出错。解决办法:根据异常信息寻找可能出现错误的地方。3、内存溢出,像诸...

java程序不能运行,高手指点:
Collection<String> c = new HashSet<String>();或者直接使用 Collection<Object> c = new HashSet<Object>();。这是一种增加类型安全的策略。所以你可以使用javac -Xlint:Uncheck BasicContainer.java命令强制忽略类型检查来编译,或者改用上面的写法。

java程序怎么运行不了,请高手指点
找个Eclipse,你在写程序的时候它就会告诉你那里错了

java程序不能运行,高手指点:
import java.util.*;public class Test { public static void main( String args[]) { Collection c = new ArrayList();c.add("hello");String[] names = {"f1","l1"};c.add(names);c.add(new Integer(100));System.out.println(c.size());\/\/c.size();System.out.println(c);}...

求高手指点,这是java中的小程序但是编译一直出现错误。。。
我测试了你的程序,程序中的变量有 season, seson month int mont =4; 正确 String season; 应该初始化 String season = "";另外还应该有 String seson = "";最后这个你应该写错了,在 {seson ="不合法的月份";}位置 中英文的括号就不用说了吧。

关于java的问题 高手指点,程序运行有错误 很郁闷找了n久都找不到
public void main (String args []){ -- 缺少 static Singer s1 = (Sing)new Student("le"); -- (Sing)写错,应为Singer s1.sing(); s1.sleep();Singer s2 = new Teacher("steven");s2.sing();s2.sleep();Painter p1 = (Painter) s2;p1.paint();p1.eat();} 其它的...

java调试问题,高手指点一下,小弟新手!谢谢了
lx.java:1: class HelloWorld is public, should be declared in a file named HelloWorld.java 提示已经告诉你了,如果你不同E文那么给你翻译一下:文件名:lx.java:错误位于第1行:类“HelloWorld”被声明为公共,那么包含这个类的文件必须被命名为“HelloWorld.java”。把文件名改为“HelloWorld.java...

急需高手指点。。。一个JAVA运行问题!
有2种可能 第一查看你jdk环境变量是否配置正确 www.cise.ufl.edu\/class\/cop3530fa08\/env.ppt here attach the ppt tutorial for how to configur jdk environment variable 第二查看你运行文件确实导入包了。。。feel free to contact me :)...

下面的Java程序为什么运行不了?
运行这个程序是需要带参数的,因为这个args[0]你没有赋值,如果你是用eclipse的话很简单,在eclipse中右键这个类原代码-->properties-->左边选择run\/debug settings-->在右边选择你的类-->在向右选择edit-->在弹出的对话框选择卡中选择第二个 (x)=arguments-->在上面的program arguments文本框中...

相似回答
大家正在搜