恼人的问题 编译通过,可是结果不正确 问题出在哪

qilimazhaluo 2011-01-10 02:35:39
import java.awt.*;
import java.util.*;
import java.applet.Applet;

public class Applet18 extends Applet {
int i, j, k, l;
Vector v = new Vector();

public void init(){
for(i=1;i<=50;i++){
for(j=1;j<=50;j++){
for(k=1;k<=50;k++){
int [] myint = {i, j, k};
v.add(myint);


}
}
}
}

public void paint(Graphics g){
for(l=0;l<v.size();l++){
int [] nint =(int []) v.elementAt(l);
if((nint[0]*nint[0]+nint[1]*nint[1])!=nint[2]*nint[2]){
v.remove(l);
while(l>=v.size()-1){
g.drawString((new Integer(v.size())).toString(), 60, 60);
int [] mi = (int [])v.elementAt(2);
g.drawString((new Integer(mi[0])).toString(), 60, 80);
g.drawString((new Integer(mi[1])).toString(), 60, 100);
g.drawString((new Integer(mi[2])).toString(), 60, 120);

}
}
}

}
}


求50以下的整数中能组成直角三角行的任意组合;
...全文
65 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
magong 2011-01-10
  • 打赏
  • 举报
回复
不做不知道啊,原来有这么多可配的整数
import java.awt.*;
import java.util.*;
import java.applet.Applet;

public class Applet18 extends Applet {
int i, j, k, l;
Vector v = new Vector();

public void init() {
for (i = 1; i <= 50; i++) {
for (j = 1; j <= 50; j++) {
for (k = 1; k <= 50; k++) {
int[] myint = { i, j, k };
if (i*i + j*j == k*k) v.add(myint);

}
}
}
}

public void paint(Graphics g) {
g.drawString((new Integer(v.size())).toString(), 60, 60);
for (l = 0; l < v.size(); l++) {
int[] mi = (int[]) v.elementAt(l);
g.drawString((new Integer(mi[0])).toString(), 60+20*0, 80+l*20);
g.drawString((new Integer(mi[1])).toString(), 60+20*1, 80+l*20);
g.drawString((new Integer(mi[2])).toString(), 60+20*2, 80+l*20);

}
}
}
fatfoxz 2011-01-10
  • 打赏
  • 举报
回复
用上面我修改的代码算只有20个。
当然不一定对。。。。。。。

我觉得楼主的错误是:
init方法逻辑不对。
例:i=3,j=4,k=5,和i=5,j=4,k=3,应该算一个三角形,但按照楼主把这个算两个了。
也就是说必须设定i<=j<=k的一个顺序后,才能保证得到的结果里没有类似上述例子的重复。

另外,我觉得paint方法直接取个count比v.remove(l);看着舒服。。。
fatfoxz 2011-01-10
  • 打赏
  • 举报
回复
import java.awt.*;
import java.util.*;
import java.applet.Applet;

public class t extends Applet {
int i, j, k, l;

Vector v = new Vector();

public void init() {
for (i = 1; i <= 50; i++) {
for (j = i; j <= 50; j++) {
for (k = j; k <= 50; k++) {
int[] myint = { i, j, k };
v.add(myint);

}
}
}
}

public void paint(Graphics g) {
int count = 0;
for (l = 0; l < v.size(); l++) {
int[] nint = (int[]) v.elementAt(l);
// if ((nint[0] * nint[0] + nint[1] * nint[1]) != nint[2] * nint[2])
// {
// v.remove(l);
// while (l >= v.size() - 1) {
// g.drawString((new Integer(v.size())).toString(), 60, 60);
// int[] mi = (int[]) v.elementAt(2);
// g.drawString((new Integer(mi[0])).toString(), 60, 80);
// g.drawString((new Integer(mi[1])).toString(), 60, 100);
// g.drawString((new Integer(mi[2])).toString(), 60, 120);
//
// }
// }
if ((nint[0] * nint[0] + nint[1] * nint[1]) == nint[2] * nint[2]) {
count++;
}
}
g.drawString(String.valueOf(count), 60, 60);
}
}
qilimazhaluo 2011-01-10
  • 打赏
  • 举报
回复
以后出现这样的类似的问题,有没有固定的解决程序,或者说是常规的解决步骤

62,612

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧