1.
化工小白又回来了,化工厂拧阀门拧累了又回来学会Java。看到csdn上画心型图很火,就把代码拿去试,结果出现如下报错。。
报错
Class 'heart' is public, should be declared in a file named 'heart.java'
解决根据idea的提示把public去掉就不报错。
后面回想起来浙大翁恺老师讲的public和pravite的区别
对于一个类如果加了“public”表示该项目任何位置的类都可以访问;不加public默认为“friendly”类,只有同一个包里的类可以访问。
但一个编译单元即xxx.java文件只能有一个public类,且和xxx.java文件同名。一个编译单元可以有多个“friendly”类。
所以小白以后抄代码记得保持java文件名和类名相同了,或者把public去掉。
2.心型图出来了挺漂亮的,好像是调用java.awt和java.swing来作图的
抄的代码如下
import javax.swing.*;
import java.awt.*;
class heart extends JFrame {
private static final long serialVersionUID = -1284128891908775645L;
// 定义加载窗口大小
public static final int GAME_WIDTH = 500;
public static final int GAME_HEIGHT = 500;
// 获取屏幕窗口大小
public static final int WIDTH = Toolkit.getDefaultToolkit().getScreenSize().width;
public static final int HEIGHT = Toolkit.getDefaultToolkit().getScreenSize().height;
public heart() {
// 设置窗口标题
this.setTitle("心形曲线");
// 设置窗口初始位置
this.setLocation((WIDTH - GAME_WIDTH) / 2, (HEIGHT - GAME_HEIGHT) / 2);
// 设置窗口大小
this.setSize(GAME_WIDTH, GAME_HEIGHT);
// 设置背景色
this.setBackground(Color.BLACK);
// 设置窗口关闭方式
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 设置窗口显示
this.setVisible(true);
}
@Override
public void paint(Graphics g) {
double x, y, r;
Image OffScreen = createImage(GAME_WIDTH, GAME_HEIGHT);
Graphics drawOffScreen = OffScreen.getGraphics();
for (int i = 0; i < 90; i++) {
for (int j = 0; j < 90; j++) {
r = Math.PI / 45 * i * (1 - Math.sin(Math.PI / 45 * j)) * 18;
x = r * Math.cos(Math.PI / 45 * j) * Math.sin(Math.PI / 45 * i) + GAME_WIDTH / 2;
y = -r * Math.sin(Math.PI / 45 * j) + GAME_HEIGHT / 4;
//设置画笔颜色
drawOffScreen.setColor(Color.PINK);
// 绘制椭圆
drawOffScreen.fillOval((int) x, (int) y, 2, 2);
}
// 生成图片
g.drawImage(OffScreen, 0, 0, this);
}
}
public static void main(String[] args) {
heart demo = new heart();
demo.setVisible(true);
}
}
小白加油🆙💪🏻!!!