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

条件:x<y<z,x^3+y^3=z^3+1,用程序找出头10组符合条件的x,y,z数值,由x增长顺序显示出结果。importjava.util.*;publicclas... 条件:x<y<z, x^3 + y^3 = z^3 +1, 用程序找出头10组符合条件的x,y,z数值,由x增长顺序显示出结果。

import java.util.*;

public class ThreesX{
static int x;
static int y;
static int count =0;
static double z;

public static void main(String []args){
x = 1;
y = 2;

while(count < 10){

while(x>0 && x<z){

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

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

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

count ++;
}
x++;
}
//z= y+1;
}
}
}
可以给出解决方法吗?谢谢
展开
 我来答
liushebiao
2009-08-01 · TA获得超过3336个赞
知道小有建树答主
回答量:724
采纳率:0%
帮助的人:400万
展开全部
我改写了下楼主的代码..基本可以实现,但是效率不高,再加之本人的电脑较慢.在算出5组后,放弃(-_|||)但基本思想应该是符合楼主需要的..

代码如下:
import java.util.Set;
import java.util.TreeSet;

public class ThreesX {

private static class Function implements Comparable<Function> {
private double x;
private double y;
private double z;

public Function(double x, double y, double z) {
this.x = x;
this.y = y;
this.z = z;
}

@Override
public int compareTo(Function arg0) {
// TODO Auto-generated method stub
if (arg0.x - this.x < 0) {
return 1;
} else if (arg0.x - this.x > 0) {
return -1;
} else
return 0;
}

@Override
public String toString() {
return "x = " + (int) x + " y = " + (int) y + " z = " + (int) z
+ "\n";
}
}

public static void main(String[] args) {
double x;
double y;
double z;

int count = 0;
Function f;
Set<Function> set = new TreeSet<Function>();
for (z = 2;; z++) {
for (y = 1; y < z; y++) {
for (x = 0; x < y; x++) {
double resultLeft = Math.pow(x, 3) + Math.pow(y, 3);
double resultRight = Math.pow(z, 3) + 1;
if (resultLeft == resultRight) {
f = new Function(x, y, z);
System.err.println(f);
set.add(f);
count++;
}
if (count == 5) { System.err.println(set);
return;
}
}
}
}
}
}

我在其中新加入了一个静态局部类Function类,里面保存x,y,z,重写了比较方法compareTo以方便排序

在程序中用set会依据其中对象的compareTo方法的结果排序,因此用Function保存每个合适的的x,y,z,然后利用打印set时会自动依照compareTo的结果进行排序,以实现按照x的增长排序.

依然最多算到第六个数,因为随着z的增大,程序的复杂度会逐渐增加,目前知道的1000以内的符合楼主要求的数只有6组.楼主可以用5,或者6对程序进行下测试.应该是无误的.

以上.
℡玥玥弔
2009-08-01 · TA获得超过1590个赞
知道答主
回答量:119
采纳率:0%
帮助的人:96.8万
展开全部
while(count < 10){

while(x>0 && x<z){
出现了死循环了!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
JN_Y
2009-08-01
知道答主
回答量:53
采纳率:0%
帮助的人:34.5万
展开全部
while(x>0 && x<z)
Z没有赋值 默认是0
所以这个while进不去, 所以一直在while(count<10){}这个循环里
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式