那里出错了Java
发布网友
发布时间:2023-03-06 22:38
我来回答
共1个回答
热心网友
时间:2023-10-03 03:42
你可以将
{
Point p=new Point();
p.x=4;
System.out.println(p.x);
p.y=5;
System.out.println(p.y);
}
代码块,做为非静态代码块,放到Rectangle类或者Main类或者Point类中,编译就能通过了,但是依据题意,还是应该放到Rectangle类或者Main类中为好,因为可以调用它,放到Point类中,没有类调用它这段代码了。完整的Java程序如下
public class Main {
public static void main(String[] args) {
Rectangle rect=new Rectangle();
rect.width=100;
System.out.println(rect.width);
rect.height=200;
System.out.println(rect.height);
Rectangle rect2=new Rectangle();
rect2.width=10;
System.out.println(rect2.width);
rect2.height=20;
System.out.println(rect2.height);
}
}
class Rectangle
{
int width;
int height;
{
Point p=new Point();
p.x=4;
System.out.println(p.x);
p.y=5;
System.out.println(p.y);
}
}
class Point
{
int x;
int y;
}
运行结果
4
5
100
200
4
5
10
20
因为是非静态代码块在Rectangle类中,所以每建一个Rectangle对象,都会执行一次非静态代码块,所以Point类的打印被执行了两次。
追问怎么单独的把结果改成100
200
10
20
4
5