【发布时间】:2017-11-07 23:03:11
【问题描述】:
我正在尝试在 Textpad 中编译此 Java 程序,但出现以下错误
C:\Users\User\Desktop\java\Drawing.java:14:错误:不兼容的类型:从浮点数到整数的可能有损转换 g.drawLine ((getWidth()/2) , 0, (getWidth()*i) , (getHeight()/2));
这里是代码
import javax.swing.*;
import java.awt.*;
import java.util.Random;
public class Drawing extends JPanel
{
public void painComponent(Graphics g)
{
super.paintComponent (g);
for (float i=0; i<=1; i+=1/7)
{
Random r=new Random();
g.setColor(new Color(r.nextInt(256), r.nextInt(256), r.nextInt(256)));
g.drawLine ((getWidth()/2) , 0, (getWidth()*i) , (getHeight()/2));
}
g.drawLine(0,getHeight()/2, getWidth()/2, getHeight()/2);
g.drawLine(getWidth(), getHeight()/2, getWidth()/2, getHeight());
}
public static void main(String args[])
{
Drawing d=new Drawing();
JFrame frame=new JFrame();
frame.add(d);
frame.setSize(600,600);
frame.setTitle("Drawing");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
我尝试在 getWidth*i 之前添加 (float),但它对我不起作用。 谷歌也没有太大帮助,或者我搜索得不够。如果有人可以为我提供特定的解决方案,我将不胜感激。
谢谢
【问题讨论】:
-
你到底在做什么迭代浮点数?您的循环可能不会超过 1。
-
请注意
i+=1/7引入了整数除法,因此1/7是0(四舍五入 到接近零)。你应该改用1.0/7.0或类似的东西。 -
旁注:在要覆盖的方法上使用
@Override是个好主意,正是因为它允许编译器捕获像public void painComponent这样的拼写错误。只要你的方法是这样拼写的,它就永远不会被调用。
标签: java