您的位置:首页 > 编程语言 > Java开发

Java随机生成若干个三位数,并求出其中的水仙花数

2009-12-25 21:17 274 查看
有个朋友问怎么做,顺手弄了下。。。

题设:定义一个类,该类中有一个整型数组,类中定义一个方法随机生成一个元素值为三位正整数的数组并求出其中的水仙花数,数组的元素的个数由参数指定。定义一个参数为整数类型的构造函数初始化数组元素个数。
编写应用程序,使用类中定义的各种方法并将结果输出

Shuxianhuashu.java源代码:

public class Shuixianhuashu {
static int[] ss;

// 构造方法初始化长度
public Shuixianhuashu(int length) {
ss = new int[length];
initArray();
}

public static void main(String[] args) {
Shuixianhuashu sh = new Shuixianhuashu(2000);// 生成指定数量的三位随机数
// 如果数字是水仙花数则输出结果
int flag = 0; // 标志,记录是否生成了水仙花数
for (int i = 0; i < ss.length; i++) {
if (sh.isShui(ss[i])) {
flag++;
System.out.println("找到水仙花数,它是数组中的第 " + (i + 1) + " 个元素,它的值是:"
+ ss[i]);
}
}
if (flag == 0) {
System.out.println("******很遗憾,本次没有随机到水仙花数。");
} else {
System.out.println("******不错,本次随机生成了 " + flag + " 个水仙花数。");
}
}

// 初始化数组,生成指定数量的三位随机数
public void initArray() {
for (int i = 0; i < ss.length; i++) {
double d = 0;
do {
d = Math.random();
} while (d < 0.1);
ss[i] = (int) (d * 1000);
}
System.out.println("******初始化完毕,一共生成 " + ss.length + " 个三位随机数。");
}

// 判断是否水仙花数
public boolean isShui(int x) {
if (x < 100 || x >= 1000)
return false;
String s = x + "";
int a = Integer.parseInt(s.substring(0, 1));
int b = Integer.parseInt(s.substring(1, 2));
int c = Integer.parseInt(s.substring(2, 3));
if (Math.pow(a, 3) + Math.pow(b, 3) + Math.pow(c, 3) == x)
return true;
else
return false;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: