求助、、、、

nuoop 2012-03-28 09:15:15
public class UseClass_1 {

/**
* @param args
*/
class Point{
int x,y;
public Point(int x,int y){
this.x=x;
this.y=y;
}
}
class Circle{
Point center=new Point(0,0);
double radius=0;
public Circle(int x,int y,double r){
center.x=x;
center.y=y;
radius=r;
}
public double area(){
return Math.PI*radius*radius;
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Point p =new Point(7,8);
Circle c=new Circle(p.x,p.y,9);

System.out.println("圆中心点在"+"("+Point.x+","+Point.y+")");
System.out.println("半径为"+Circle.radius);
System.out.println("圆的面积为"+Circle.area());

}


}
这个程序出了什么问题、、、
??
...全文
59 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
sdojqy1122 2012-03-28
  • 打赏
  • 举报
回复

public class UseClass_1 {
class Point{
int x,y;
public Point(int x,int y){
this.x=x;
this.y=y;
}
}
class Circle{
Point center=new Point(0,0);
double radius=0;
public Circle(int x,int y,double r){
center.x=x;
center.y=y;
radius=r;
}
public double area(){
return Math.PI*radius*radius;
}
}

public void run(){
Point p =new Point(7,8);
Circle c=new Circle(p.x,p.y,9);
System.out.println("圆中心点在"+"("+p.x+","+p.y+")");
System.out.println("半径为"+c.radius);
System.out.println("圆的面积为"+ c.area());
}
public Point newPoint(){

return new Point(7,8);
}
public Circle newCircle(){
Point p=newPoint();
return new Circle(p.x,p.y,9);
}
public static void main(String[] args){
UseClass_1 user = new UseClass_1();
user.run();
Point p = user.newPoint();
Circle c = user.newCircle();
}
}

我想纠正一下一楼的观点,内部类可以new出来,只是main方法是静态方法,而且类是UseClass_1对象的,所以必须先有UseClass_1的实例,才可以new出来。
nuoop 2012-03-28
  • 打赏
  • 举报
回复
class Point{
static int x,y;
public Point(int x,int y){
this.x=x;
this.y=y;
}
}
class Circle{


Point center=new Point(0,0);
static double radius=0;
public Circle(int x,int y,double r){
center.x=x;
center.y=y;
radius=r;
}
public static double area(){
return Math.PI*radius*radius;
}
}
public class UseClass_1 {

/**
* @param args
*/

public static void main(String[] args) {
// TODO Auto-generated method stub
Point p=new Point(7,8);
Circle c=new Circle(p.x,p.y,9);

System.out.println("圆中心点在"+"("+Point.x+","+Point.y+")");
System.out.println("半径为"+Circle.radius);
System.out.println("圆的面积为"+Circle.area());

}


}
nuoop 2012-03-28
  • 打赏
  • 举报
回复
public class UseClass_1 {

/**
* @param args
*/
static class Point{
static int x,y;
public Point(int x,int y){
this.x=x;
this.y=y;
}
}
static class Circle{
public static String x;
public static String y;
Point center=new Point(0,0);
static double radius=0;
public Circle(int x,int y,double r){
center.x=x;
center.y=y;
radius=r;
}
public static double area(){
return Math.PI*radius*radius;
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub

Circle c=new Circle(7,8,9);

System.out.println("圆中心点在"+"("+Point.x+","+Point.y+")");
System.out.println("半径为"+Circle.radius);
System.out.println("圆的面积为"+Circle.area());

}
五哥 2012-03-28
  • 打赏
  • 举报
回复


/**
*把这个类放到类外面声明
*/
class Point{
int x,y;
public Point(int x,int y){
this.x=x;
this.y=y;
}
}
/**
*把这个类放到类外面声明
*/
class Circle{
Point center=new Point(0,0);
double radius=0;
public Circle(int x,int y,double r){
center.x=x;
center.y=y;
radius=r;
}
public double area(){
return Math.PI*radius*radius;
}
}
public class UseClass_1 {

/**
* @param args
*/

public static void main(String[] args) {
// TODO Auto-generated method stub
Point p =new Point(7,8);
Circle c=new Circle(p.x,p.y,9);

/**
*如果使用类名.方法(),那么你的方法需要定义成为static,即 public static double area();
*但是 area()中使用了radius这个属性也需要定义成为 static,因为静态方法不能访问类中非静态属性和方法
*/
System.out.println("圆中心点在"+"("+p.x+","+p.y+")");
System.out.println("半径为"+c.radius);
System.out.println("圆的面积为"+c.area());

}


}

zhaoct 2012-03-28
  • 打赏
  • 举报
回复

public static void main(String[] args) {
UseClass_1 uc = new UseClass_1();
UseClass_1.Point p = uc.new Point(7, 8);
UseClass_1.Circle c = uc.new Circle(p.x, p.y, 9);

System.out.println("圆中心点在" + "(" + p.x + "," + p.y + ")");
System.out.println("半径为" + c.radius);
System.out.println("圆的面积为" + c.area());

}
MiceRice 2012-03-28
  • 打赏
  • 举报
回复
除了1楼的问题外,你后面的输出也有问题,不能直接用类来试图访问成员变量,因该是:

System.out.println("圆中心点在" + "(" + c.center.x + "," + c.center.y + ")");
System.out.println("半径为" + c.radius);
System.out.println("圆的面积为" + c.area());

不过一楼解释的不完全准确,是因为main函数本身是static的,所以它引用的内部类也必须是static的;非static函数,可以直接new非static的内部类。
宏Lee 2012-03-28
  • 打赏
  • 举报
回复
内部类就相当于你的属性,加上static才能new
宏Lee 2012-03-28
  • 打赏
  • 举报
回复
你有2个问题,内部类不能被new,类名.属性,是要加上static的属性才行

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧