Java 如何将双精度数组转换为整数数组
大家好我的名字是Fyree,我最近正在完成一项学校作业,需要一些帮助。首先,让我给你这个问题所涉及的代码的后半部分:Java 如何将双精度数组转换为整数数组,java,arrays,for-loop,methods,type-conversion,Java,Arrays,For Loop,Methods,Type Conversion,大家好我的名字是Fyree,我最近正在完成一项学校作业,需要一些帮助。首先,让我给你这个问题所涉及的代码的后半部分: public class Rate_Graph_Graph extends Rate_Graph1{ double Aa, Bb, Cc, Dd, Ee, Ff; public void anotheractionPerformed(ActionEvent ae) { if (ae.getSource() == cal
public class Rate_Graph_Graph extends Rate_Graph1{
double Aa, Bb, Cc, Dd, Ee, Ff;
public void anotheractionPerformed(ActionEvent ae)
{
if (ae.getSource() == calc){
Aa = Double.parseDouble(bv1.getText());
Bb = Double.parseDouble(ev_1.getText());
Cc = Double.parseDouble(ev_2.getText());
Dd = Double.parseDouble(ev_3.getText());
Ee = Double.parseDouble(ev_4.getText());
Ff = Double.parseDouble(ev_5.getText());
}
}
JLabel graphLabel;
double[] data = {Aa, Bb, Cc, Dd, Ee, Ff};
final int finalInt = 50;
public void paintGraph(Graphics g){
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
int w = getWidth();
int h = getHeight();
graphLabel = new JLabel ("<HTML><FONT SIZE =+25>Line Graph showing the Return Rate</FONT>");
add(graphLabel);
g2.draw(new Line2D.Double(finalInt, finalInt, finalInt, h-finalInt));
g2.draw(new Line2D.Double(finalInt, h-finalInt, w-finalInt, h-finalInt));
Font font1 = g2.getFont();
FontRenderContext fontRender = g2.getFontRenderContext();
LineMetrics lineMetrics = font1.getLineMetrics("0", fontRender);
float ft = lineMetrics.getAscent()+lineMetrics.getDescent();
String str = "";
g.drawString("Aa", 5, 315);
g.drawString("Bb", 5, 260);
g.drawString("Cc",5,205);
g.drawString("Dd",5,150);
g.drawString("Ee",5,100);
g.drawString("Ff",5,55);
g.drawString("Beginning Value",50,335);
g.drawString("Yeatr 1 Value",175,335);
g.drawString("Year 2 Value",300,335);
g.drawString("Year 3 Value",425,335);
g.drawString("Year 4 Value",550,335);
g.drawString("Year 5 Value",675,335);
float ft2 = finalInt + ((h - 2*finalInt) - str.length()*ft)/2 + lineMetrics.getAscent();
for(int i = 0; i < str.length(); i++){
String strLetter = String.valueOf(str.charAt(i));
float ft3 = (float)font1.getStringBounds(strLetter, fontRender).getWidth();
float ft4 = (finalInt - ft3)/2;
g2.drawString(strLetter, ft3, ft4);
ft2 += ft;
}
str = "YEARS";
ft2 = h - finalInt + (finalInt - ft)/2 + lineMetrics.getAscent();
float ft3 = (float)font1.getStringBounds(str, fontRender).getWidth();
float ft4 = (w - ft3)/2;
g2.drawString(str, ft4, ft2);
double xInc = (double)(w - 2*finalInt)/(data.length-1);
double scale = (double)(h - 2*finalInt)/getMax();
g2.setPaint(Color.green.darker());
for(int i = 0; i < data.length-1; i++){
double x1 = finalInt + i*xInc;
double y1 = h - finalInt - scale*data[i];
double x2 = finalInt + (i+1)*xInc;
double y2 = h - finalInt - scale*data[i+1];
g2.draw(new Line2D.Double(x1, y1, x2, y2));
}
}
private double getMax()
{
int max = -Integer.MAX_VALUE;
final int[] intData = new int[data.length];
for(int i = 0; i < data.length; i++){
if(data[i] > max)
max = data[i];
}
return max;
}
public static void main(String[]args)
{
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(new GraphingData());
f.setSize(800,400);
f.setLocation(200,200);
f.setResizable(false);
f.setVisible(true);
}
}
public class Rate\u Graph\u Graph扩展了Rate\u Graph1{
双Aa、Bb、Cc、Dd、Ee、Ff;
公开作废已执行的其他行动(行动事件ae)
{
如果(ae.getSource()==calc){
Aa=Double.parseDouble(bv1.getText());
Bb=Double.parseDouble(ev_1.getText());
Cc=Double.parseDouble(ev_2.getText());
Dd=Double.parseDouble(ev_3.getText());
Ee=Double.parseDouble(ev_4.getText());
Ff=Double.parseDouble(ev_5.getText());
}
}
JLabel-graphLabel;
双[]数据={Aa,Bb,Cc,Dd,Ee,Ff};
最终整数finalInt=50;
公共空间画图(图g){
超级组件(g);
图形2d g2=(图形2d)g;
int w=getWidth();
inth=getHeight();
graphLabel=新的JLabel(“显示回报率的线形图”);
添加(图形标签);
g2.绘制(新线条2D.双色(finalInt、finalInt、finalInt、h-finalInt));
g2.绘制(新线条2D.双色(finalInt,h-finalInt,w-finalInt,h-finalInt));
Font font1=g2.getFont();
FontRenderContext fontRender=g2.getFontRenderContext();
LineMetrics LineMetrics=font1.getLineMetrics(“0”,fontRender);
float ft=lineMetrics.getAscent()+lineMetrics.getDescent();
字符串str=“”;
g、 抽绳(“Aa”,5315);
g、 抽绳(“Bb”,5260);
g、 抽绳(“Cc”,5205);
g、 抽绳(“Dd”,5150);
g、 抽绳(“Ee”,5100);
g、 抽绳(“Ff”,5,55);
g、 抽绳(“起始值”,50335);
g、 抽绳(“Yeatr 1值”,175335);
g、 抽绳(“第二年价值”,300335);
g、 抽绳(“第3年价值”,425335);
g、 抽绳(“第4年价值”,550335);
g、 抽绳(“第5年价值”,675335);
float ft2=finalInt+((h-2*finalInt)-str.length()*ft)/2+lineMetrics.getAscent();
对于(int i=0;i最大值)
max=数据[i];
}
返回最大值;
}
公共静态void main(字符串[]args)
{
JFrame f=新的JFrame();
f、 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f、 添加(新图形数据());
f、 设置大小(800400);
f、 设定位置(200200);
f、 可设置大小(假);
f、 setVisible(真);
}
}
现在我的问题是,如何将上面的double[]数据数组转换为int数组,以便在代码末尾的私有double getMax()方法中使用它(当我尝试在不进行转换的情况下进行转换时,会出现错误:“不兼容的类型:从double到int的转换可能有损失”)?感谢您的帮助,因为此任务将于今天晚些时候完成 你的错误在这里
private double getMax()
{
int max = -Integer.MAX_VALUE;
final int[] intData = new int[data.length];
for(int i = 0; i < data.length; i++){
if(data[i] > max)
max = data[i];
}
return max;
private double getMax()
{
int max=-Integer.max_值;
final int[]intData=new int[data.length];
对于(int i=0;i最大值)
max=数据[i];
}
返回最大值;
}
数组是双精度的,如果要将其与int进行比较,应执行以下操作:
private double getMax()
{
double max = Double.MIN_VALUE;
final int[] intData = new int[data.length];
for(int i = 0; i < data.length; i++){
if(data[i] > max)
max = data[i];
}
return max;
private double getMax()
{
双倍最大值=双倍最小值;
final int[]intData=new int[data.length];
对于(int i=0;i最大值)
max=数据[i];
}
返回最大值;
}
顺便说一句,什么是intData,它从来没有被使用过?它说它找不到变量DOUBLE,而且我需要在它前面加上-号。DOUBLE.MIN_值意味着,你从DOUBLE中得到最小值,这并不意味着0,它类似于-无穷大,所以它几乎与放置-MAX_值相同。哪个“双人”?如果你提到“Double.MIN_VALUE”,这个Double必须写为“Double”,否则它会失败。谢谢你,它成功了,我也知道这是离题的,但我没有得到f.add(new Rate_Graph_Graph())的错误;无法从静态上下文引用,您知道这是为什么吗?我需要将其保留为该类的public void static main(字符串[]args)。不知道,可能是因为您正在添加当前类的对象。你应该提出一个新问题,可能有人会帮助你。我这里有一个新问题:。