| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 570 人关注过本帖
标题:[原创]求教!!对象复制的问题
只看楼主 加入收藏
netfan
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2005-8-15
收藏
 问题点数:0 回复次数:5 
[原创]求教!!对象复制的问题
我写一个对象复制小程序,在调试时提示有一个错误,题是如下:
circled.java:14: unreported exception java.lang.CloneNotSupportedException; mustbe caught or declared to be thrown
mypoint p2=(mypoint)p1 .clone();

请问这是什么地方错了,
求高手帮忙了,

                             
搜索更多相关主题的帖子: declared 
2005-09-06 08:41
kai
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:52
帖 子:3450
专家分:59
注 册:2004-4-25
收藏
得分:0 
也就是说,这条语句还需要一个try catch, 或者在函数旁注明 throws ...
你自己不会的话,把代码贴出来,我帮你改改。

自由,民主,平等,博爱,进步.
中华民国,我的祖国,中华民国万岁!中华民国加油!
本人自愿加入中国国民党,为人的自由性,独立性和平等性而奋斗!
2005-09-06 15:49
netfan
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2005-8-15
收藏
得分:0 

你说得很对,我加了try catch后,没再出现这个错误,但又出现了另一个错误提示, mycircle.java:23: missing return statement } 我的源代码如下: circled.java import javax.swing.JOptionPane; import java.lang.CloneNotSupportedException; public class circled { private static String heads ="this is a cirle"; public static void main(String argv[]) { try { System.out.println(heads); String inp; int r; inp=JOptionPane.showInputDialog("input radius:"); r=Integer.parseInt(inp); mypoint p1=new mypoint(10,10); mypoint p2=(mypoint)p1.clone(); System.out.println("center at :"+p1); System.out.println("center at :"+p2); mycircle c1=new mycircle(p1,r); mycircle c2=(mycircle)c1.clone();

c1.printarea(); c1.centerat(); c2.printarea(); c2.centerat(); } catch(Exception e) { System.out.println(e); } }

} mycircle.java public class mycircle implements Cloneable { private static int cc=1; private mypoint p=new mypoint(); private int r; private int index; public mycircle(mypoint p,int r) { this.p=p; this.r=r; index=cc++; } public mycircle(mypoint p) { this(p,10); } public Object clone() throws CloneNotSupportedException { mycircle cir1=(mycircle)super.clone(); cir1.p=(mypoint)p.clone(); } public void centerat() { System.out.println("center at :"+p); } public void printarea() { System.out.println("circle "+index+"with area " +Math.PI * r * r); } } mypoint.java public class mypoint implements Cloneable { private int x,y; public mypoint(int x,int y) { this.x=x; this.y=y; }

public mypoint() { this(0,0); } public Object clone() throws CloneNotSupportedException { return super.clone(); } public int getx() { return x; } public int gety() { return y; } public void setx(int x) { this.x=x; } public void sety(int y) { this.y=y; } public String toString() { return "("+x+","+y+")"; } }

高手请帮忙了!!!

[此贴子已经被作者于2005-9-8 17:07:27编辑过]

2005-09-08 17:06
kai
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:52
帖 子:3450
专家分:59
注 册:2004-4-25
收藏
得分:0 
///////////////////////////////////////////
//
//            try it :-)
//
///////////////////////////////////////////
import javax.swing.JOptionPane;
import  java.lang.CloneNotSupportedException;

public class Circled
{
  private static String heads ="this is a cirle";
  
  public static void main(String argv[])
  {
    try
    {
      System.out.println(heads);
      String inp;
      int r;
      inp=JOptionPane.showInputDialog("input radius:");
      r=Integer.parseInt(inp);
      MyPoint p1=new MyPoint(10,10);
      MyPoint p2=(MyPoint)p1.clone();  
      System.out.println("center at :"+p1);
      System.out.println("center at :"+p2);
      MyCircle c1=new MyCircle(p1,r);
      MyCircle c2=(MyCircle)c1.clone();

      c1.printarea();
      c1.centerat();
      c2.printarea();
      c2.centerat();
    }
    catch(Exception e)
    {
      System.err.println(e.toString());
    }
  }
}

//mycircle.java

class MyCircle implements Cloneable
{
  private static int cc=0;
  private MyPoint p;
  private int r;
  private int index;
  public MyCircle(MyPoint p,int r)
  {
    this.p=p;
    this.r=r;
    index = ++cc;
  }
  public MyCircle(MyPoint p)
  {
    this(p,10);  
  }
  
  public Object clone() throws CloneNotSupportedException
  {
    MyCircle cir1 = (MyCircle)super.clone();
    cir1.p=(MyPoint)p.clone();
    cir1.index = ++cc;
    return cir1;
  }
  
  public void centerat()
  {
    System.out.println("center at :"+p);
  }
  
  public void printarea()
  {
    System.out.println("circle "+index+ " with area " +Math.PI * r * r);
  }
}

//mypoint.java


class MyPoint implements Cloneable
{
  private int x,y;
  public MyPoint(int x,int y)
  {
    this.x=x;
    this.y=y;
  }

  public MyPoint()
  {
    this(0,0);
  }

  public Object clone() throws CloneNotSupportedException
  {
    return super.clone();
  }

  public int getx()
  {
    return x;
  }
  
  public int gety()
  {
    return y;
  }

  public void setx(int x)
  {
    this.x=x;
  }
   
  public void sety(int y)
  {
    this.y=y;
  }

  public String toString()
  {
    return "("+x+","+y+")";
  }
}

自由,民主,平等,博爱,进步.
中华民国,我的祖国,中华民国万岁!中华民国加油!
本人自愿加入中国国民党,为人的自由性,独立性和平等性而奋斗!
2005-09-08 18:27
飘飘叶子
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:34
帖 子:597
专家分:10
注 册:2005-8-17
收藏
得分:0 
用eclipse编的话这种错误都会有提示的 没有try块根本不会让你编译成功的……第二个错误好像是没有返回类型啊?

向着软件工程师的目标前进!
2005-09-09 07:52
netfan
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2005-8-15
收藏
得分:0 
谢谢了!!!
高手啊!
2005-09-10 11:21
快速回复:[原创]求教!!对象复制的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.042157 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved