您的位置:首页 > 其它

读入n个数,并把他存入一个数组,并且数字不能重复

2010-11-28 20:05 232 查看
//1。从命令行输入十个数字,并存在一个数组里,且不允许重复
//其实完全可以用Set类,但是既然要求用数组,那就来吧
public static float[] arraySet(int num) throws Exception{
BufferedReader brInput=new BufferedReader(new InputStreamReader(System.in));//定义输入流,从命令行输入
float[] array=new float[num];//创建一个可以存放num个数字的数组,也就是要返回的对象
float temp=0;//用来参与循环的临时变量
for(int i=0;i<num;i++){
//一共循环num次,放入num个数
temp=Float.parseFloat(brInput.readLine());//将用户输入的数据转成float类型。其实这里应该进行检查用户是否输入的是数值,不过算了,知道就行了
//如果输入的是0,那么请用户重新一个数字,当然你也可以将数组初始化成别的难猜的数字比如4139.2068,或者连这个数你也想让用户输入的话,那你就再写一句判断一下数组里是否只有一个这个数
if(temp==0.0){
i--;//你要不--的话,用户输入几个0,你数组就少几个数
System.out.println("对不起,不能输入0这个数字,请重新输入");
continue;//嗯哏~
}
for(int j=0;j<i+1;j++){
//如果已经输入过了,骂他一句,i--跟上一个道理
if(array[j]==temp){
System.out.println("啊呀,你脑子不好使啊?这个数你刚刚输入过了");
i--;
break;
}else
//你也可以选择j<num,那就是遍历整个数组一遍,如果num很大的话,我这样会减少很大开销的,不要总想着优化,但是能优化就优化
if((array[j]!=temp)&&(array[j]==0)){
//&&前面这句好理解吧,题干说了,不能重复。之所以不能为0,这个也好理解吧。。如果不加这个条件,那么就是只要不同就替换,那你就一直替换替换替换。。。
array[j]=temp;//不解释。。。
//System.out.println(Arrays.toString(array));//这句用来测试
break;//哦哦~再来输入一个字吧~
}
}
}
return array;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐