我试图在Textpad中复制这个Java程序,但我收到以下错误
C:\Users\User\Desktop\java\Drawing.java:14: 错误: 不兼容的类型: 从 float 到 int 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)到,但是对我不起作用。谷歌也帮不上什么忙,或者说我搜索得不够多。如果有人能为我提供某种解决方案,我将不胜感激。
非常感谢。
粗略地说,编译器是索赔的,因为您试图在没有强制转换的情况下进行窄转换。看这个链接。
方法
drawLine(int x1, int y1, int x2, int y2)
期望 4 个 int 作为参数,但您提供浮点数作为第 3 个参数,因为
(getWidth()*i)
是一个int和一个float(i变量)的乘积,结果是一个浮点数(称为提升,请参阅上面的链接)。
有几种方法可以解决这个问题,但由于您的代码还有其他几个问题(例如 i = 1/7),这里最好的办法是尝试了解有关 java 基础的更多信息,例如遵循此处。
我有一个“从int到byte的可能有损转换”错误的问题,但我没有在代码中将整数转换为byte。 这是笔记本课 我不知道为什么我会得到这个错误。有人能帮助我吗?谢谢你。
我希望输入一个和另一个ex: 1和1000000000,现在我希望创建一个大小为1000000000的数组。然后在数组的每个索引处,存储int val,ex:。 当我尝试执行此操作时,Netbeans 会向我显示此行中的错误: “可能从long到int的有损转换”。这是我的密码:-
目前,我正在使用链表,但是我有一个代码问题。下面的代码运行正常,但是当我试图用a添加一些节点来生成随机数时,它给了我这个错误。在为代码添加之前,运行添加,现在您可以在main中看到。也许我错过了什么。有人能帮我理解一下吗? 附言:评论部分是我试图“升级”的主要部分。
我有这个程序,它几乎是一个计算器,但有一个移动的JLabel,每次你点击标签时都应该改变颜色,但我在代码的最底部有3个错误,我已经用注释标记了。所有三个都是:错误:不兼容类型:可能从长整型转换为整数