高手帮我检查下这个java小程序,多谢!

条件:x<y<z,x^3+y^3=z^3+1,用程序找出头10组符合条件的x,y,z数值,由x增长顺序显示出结果。主要就是可以快速给出结果,我目前发现的是用while最快... 条件:x<y<z, x^3 + y^3 = z^3 +1, 用程序找出头10组符合条件的x,y,z数值,由x增长顺序显示出结果。
主要就是可以快速给出结果,我目前发现的是用while最快了。
但是问题是第二组开始给出的结果就都是错的了‘‘‘
可以给出解决方法吗?谢谢

import java.util.*;

public class ThreesZ{

public static void main(String []args){
int x;
int y;
int count =0;
double z =1.0;
x = 1;
y = 2;

while(count < 15){

while(x<10000){

while(y>x){

z = Math.cbrt(Math.pow(x,3) + Math.pow(y,3) - 1);

if(z == (int)z && y<z){

System.out.println("x = " + x + " y = " + y + " z = " + (int)z);

count ++;
}
y++;
x++;
z++;
}

}

}

}
}
展开
 我来答
liushebiao
2009-08-05 · TA获得超过3336个赞
知道小有建树答主
回答量:724
采纳率:0%
帮助的人:392万
展开全部
(不好意思,昨天有事,没能解答)

刚看了下,改写了下,为了方便测试个别数值改了下.因为仍然计算很慢,所以没测试完,但是很快出来了两组数.

public class ThreesZ {

public static void main(String[] args) {
int x;
int y;
int count = 0;
double z = 1.0;
x = 1;
while (count < 15) {
while (x < 100) {
y = x + 1;//将y变为动态赋值,移至循环内
while (y > x && y < 100) {
z = Math.cbrt(Math.pow(x, 3) + Math.pow(y, 3) - 1);
if (z == (int) z && y < z) {
//z == (int) z,之前我也想过这么做.不过
//没想到好方法,你的用法挺巧妙的
System.out.println("x = " + x + " y = " + y + " z = "
+ (int) z);
count++;
}
y++;
//将x++移到循环外,因为在这里x++无意义.
//撤销z++,不需要
}
x++;//x++移到此处
}
}
}
}
奋斗xiao蜗牛
2009-08-04 · TA获得超过194个赞
知道答主
回答量:58
采纳率:0%
帮助的人:81万
展开全部
import java.util.*;

public class ThreesZ{

public static void main(String []args){
int x;
int y;
int count =0;
double z =1.0;
x = 1;
y = 2;

while(count < 15){

while(x<10000){

while(y>x){

z = (int) Math.cbrt(Math.pow(x,3) + Math.pow(y,3) - 1);//直接在结果中强制转化,不知道楼主是不是这个意思

if(z == (int)z && y<z){

System.out.println("x = " + x + " y = " + y + " z = " + (int)z);

count ++;
}
y++;
x++;
z++;
}

}

}
System.out.println("iodfjdfj");
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
玩转地球M4
2009-08-05
知道答主
回答量:15
采纳率:0%
帮助的人:8.9万
展开全部
import java.util.*;

public class ThreesZ{

public static void main(String []args){
int x;
int y;
int count =0;
double z =1.0;
x = 1;
y = 2;

while(count < 10){//要求为10组,所以15改为10。

while(x<10000){

while(y>x){

z = Math.cbrt(Math.pow(x,3) + Math.pow(y,3) - 1);

if(z == (int)z && y<z){

System.out.println("x = " + x + " y = " + y + " z = " + (int)z);

count ++;
}

x++;
//将y++退出到外层循环,去掉z++
}

y++;

}

}

}
}

思路错误,在参数x与y比较时,只需要x自加,错时,y自加,而z每次执行都会给其设值。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式