请教Java高手一个“1+1!=2”的代码调试需求。
高手,您好:小弟遇到了一个很奇葩的代码故障:图片一是小弟运行单元测试生成的用户UI界面。图片二是小弟把上面的用户UI界面所属类型放到项目里运行的结果。求高手点拨:造成这个...
高手,您好: 小弟遇到了一个很奇葩的代码故障: 图片一是小弟运行单元测试生成的用户UI界面。 图片二是小弟把上面的用户UI界面所属类型放到项目里运行的结果。 求高手点拨: 造成这个现象的可能的原因有哪些?小弟已经试了好多回了,屡试“不爽”。 小弟的上面的运行结果所属类型的核心源代码如下:package c_port_packageBJTeacher;public class NoteUserOurSysInfo3 extends JFrame implements WindowListener { /** * */ private static final long serialVersionUID = 1L; private String imgPath = "OutofEffective.png"; CustomImgPanel imgPanel = null; Font fnt = new Font("黑体", Font.BOLD, 20); static JLabel jL0 = new JLabel(); public static void main(String[] args) { new NoteUserOurSysInfo3(); } public NoteUserOurSysInfo3() { this.setTitle("系统信息提示窗口:"); BufferedImage bi = null; try { bi = ImageIO.read(getClass().getResourceAsStream(imgPath)); } catch (IOException e) { e.printStackTrace(); } int w = bi.getWidth(); int h = bi.getHeight(); setBounds(200, 110, w, h); this.setResizable(false); double panelWidth = w; double panelHeight = h - 25 - 25 - 20;// (两个25是内外两个窗口标题栏的高度,20是底部更新进度栏的高度) imgPanel = new CustomImgPanel((double) panelWidth, (double) panelHeight, imgPath); imgPanel.setLayout(new BorderLayout()); jL0.setText("<html>最后一个故障了,求诸位亲友帮忙!!</html>"); jL0.setFont(fnt); imgPanel.add(jL0, BorderLayout.CENTER); setBounds(440, 280, 500, 200); this.setResizable(false); setVisible(true); this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);;; this.setTitle("用户工作记录系统提示"); this.setVisible(true); imgPanel = new CustomImgPanel((double) panelWidth, (double) panelHeight, imgPath); this.add(imgPanel); imgPanel.add(jL0); this.addComponentListener(new ComponentAdapter() { public void componentResized(ComponentEvent e) { } }); }} 希望得到高手的点拨。 谢谢高手的过目。 小弟,在线等。
展开
1个回答
展开全部
当然要影响,你只定义了一个全局变量i,只有重新定义局部变量i才会使全局变量在局部被屏蔽。
稍微改一下,你定义一个j,就行了。
int i = 1;
int j = 0;
double a = 1;
double c = 0;
while (i<=20){
j = i;
//下面这个循环出来结果都是a =1;你再改一下逻辑
while (j>0){
a =1;
a= a * j;
j--;
}
c = c + 1/a;
i ++;
}
System.out.println(c);
//稍微改一下,只保留4位小数。
public static void main(String[] args) {
// TODO Auto-generated method stub
int i = 1;
int sum = 0;
while (i<=20){
sum += 10005/i; //10005,保留4位小数,5是用来做四舍五入的。
i ++;
}
double result = sum/10000.0;//这个10000.0必须要有.0,否则就不会有小数
System.out.println(result);
稍微改一下,你定义一个j,就行了。
int i = 1;
int j = 0;
double a = 1;
double c = 0;
while (i<=20){
j = i;
//下面这个循环出来结果都是a =1;你再改一下逻辑
while (j>0){
a =1;
a= a * j;
j--;
}
c = c + 1/a;
i ++;
}
System.out.println(c);
//稍微改一下,只保留4位小数。
public static void main(String[] args) {
// TODO Auto-generated method stub
int i = 1;
int sum = 0;
while (i<=20){
sum += 10005/i; //10005,保留4位小数,5是用来做四舍五入的。
i ++;
}
double result = sum/10000.0;//这个10000.0必须要有.0,否则就不会有小数
System.out.println(result);
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询