编写一个Java程序,它能产生从0~9的十个数字中随机取出4个不重复的数字组成一个字符串

编写一个Java程序,它能产生从0~9的十个数字中随机取出4个不重复的数字组成一个字符串,例如:0123,3657,4578还有最好用数组做哦,这是4个数的,如果6个呢,... 编写一个Java程序,它能产生从0~9的十个数字中随机取出4个不重复的数字组成一个字符串,例如:0123,3657,4578
还有最好用数组做哦,这是4个数的,如果6个呢,8个呢,我想用数组比较方便以后的改进吧
展开
 我来答
ajax_2003
推荐于2017-10-09 · TA获得超过4995个赞
知道大有可为答主
回答量:2628
采纳率:0%
帮助的人:2464万
展开全部
import java.util.Random;
public class test{
public static void main(String[] args){
Random ran = new Random();
StringBuffer sb = new StringBuffer();
int i = 0;
while(i < 4){
int t = ran.nextInt(9);
if(sb.indexOf(String.valueOf(t)) == -1){
sb.append(t);
i++;
}
}
System.out.println(sb.toString());
}
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
网络剑客Eks
2008-10-29 · TA获得超过425个赞
知道小有建树答主
回答量:224
采纳率:0%
帮助的人:244万
展开全部
import java.util.Random;

public class A
{
public static void main(String[] args)
{
int lng=8;//这里是你要定义的总长度,想多少输多少,但是注意:不能超过随机数 间隔的最大值。
Random r = new Random();
String result = "";
String count =String.valueOf(r.nextInt(9));
while (result.length() != lng)
{
count =String.valueOf(r.nextInt(9));
if (result.contains(count)==false)
result += count;
}
System.out.println(result);
}

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cheng5546
2008-10-25 · TA获得超过719个赞
知道答主
回答量:203
采纳率:0%
帮助的人:166万
展开全部
一楼的写得真不错 sb.indexOf(String.valueOf(t)) == -1
可是你这个int t = ran.nextInt(9); t随机取不到9了哦 呵呵 改为10的话就完美了
下面是我写的 比较笨的方法 帮你调试好了 看下吧
import java.util.Random;
public class P {
public static void main(String[] args) {
Random rand = new Random();
int r1, r2, r3, r4;
flag:
while (true) {
r1 = rand.nextInt(10);
r2 = rand.nextInt(10);
r3 = rand.nextInt(10);
r4 = rand.nextInt(10);
if ((r1 != r2) && (r1 != r3) && (r1 != r4) && (r2 != r3)
&& (r2 != r4) && (r3 != r4)) {
System.out.println(r1 + "" + r2 + "" + r3 + "" + r4);
break;
}
continue flag;
}
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tzkq
2008-10-24 · TA获得超过357个赞
知道答主
回答量:285
采纳率:0%
帮助的人:0
展开全部
其实一楼写的非常好 那个.indexOf(String.valueOf(t)) == -1 用的相当精彩

我思量着
.indexOf(Integer.toString(t)) == -1 .indexOf(new Integer(t).toString()) == -1
也是可行的

为了展示不同的想法 我写个不同的 当然并不是最好的

import java.util.Random;
public class test{
public static void main(String[] args){
Random ran = new Random();
String str = new String();
boolean[] b = boolean[10];
for(int i = 0;i<4;i++){
int k;
while(!b[(k = ran.nextInt(9))]){
b[k]=true;
str+=k;
}
}
System.out.println(str);
}
}

没有编译 不知道是否有错误
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cqd20071103
2008-10-25
知道答主
回答量:25
采纳率:0%
帮助的人:0
展开全部
我楼上的这位.你这方法应该还算可以.
可以让些初学的比较明白.
不过关于运算速度不如
我的方法是弄个数组

import java.util.Random;

public class suijidemo {

public static void main(String[] args) {
Random r = new Random();
int s = 10;
int j;
int a[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, };
for (int i = 0; i < 4; i++) {
j = r.nextInt(s--);
System.out.print(a[j]);
a[j] = a[s];
}
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式