200分关于JAVA的程序简单问题

来源:百度知道 编辑:UC知道 时间:2024/05/26 04:26:00
条件
随机生成7个小于10的数 并且不能重复!!!

下面是我写的程序 为何不能实现

还有一个条件 尽量不要改动太大 我的程序

只需要告诉我为什么这样写达不到效果就行

200分

package Hg;

public class Guanyusuijishu {
static int i = 0;
static int bb[] ={-1,-1,-1,-1,-1,-1,-1,-1,-1,-1};//这里赋值 不管这有没有意义
public static void suijishu() {

int x = 10;//这里以后要用 所以下面的a>x不要改为a>10

int a = (int) (100 * Math.random());//这里的a 可以获得 0-99的整数!!!

if (a > x) {//排除大于10的数字
suijishu();
}

else {
for (int j = 0; j < x; j++) {
if (bb[j]==a) { //比较是否获得的a 我以前已经有过了 若有 则不要!
suijishu();
break;
}

else {
bb[i] = a; //将一个新的随即小于10的值给我的 数组bb[0]
System.out.println(bb[i]);
i++; //为了数组不会反复存一个地方 让下一位变成bb[1]
break;
}

}

}

}

public static void main(String []args){
su

楼主的错误在与对于递归的次数没有控制。
在你的代码中,每一次的suiji()都会生成一个不相同的随机数。而控制这个个数,也就是控制递归的深度的变量就是i。

我在你的程序上小小修改一下就OK了。

package Hg;

public class Guanyusuijishu {
static int i = 0;
static int bb[] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 };// 这里赋值不管这有没有意义

public static void suijishu() {
int x = 10;// 这里以后要用 所以下面的a>x不要改为a>10
int a = (int) (100 * Math.random());// 这里的a 可以获得 0-99的整数!!!
if (a > x) {// 排除大于10的数字
suijishu();
} else {
for (int j = 0; j <= i; j++) {
if (bb[j] == a) { // 比较是否获得的a 我以前已经有过了 若有 则不要!
// suijishu();
return;
}
// else {
// bb[i] = a; // 将一个新的随即小于10的值给我的 数组bb[0]
// System.out.println(bb[i]);
// i++; // 为了数组不会反复存一个地方 让下一位变成bb[1]
// break;
// }
}
bb[i] = a; // 将一个新的随即小于10的值给我的 数组bb[0]
System.out.println(bb[i]);
i++; // 为了数组不会反复存一个地方 让下一位变成bb[1]