求教数组小程序

wangyi1634313076 2010-11-25 11:24:12
怎样写一个给一个数组赋值的程序,且其值没有重复。假设数组长度为10。
...全文
246 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
e_forrest 2010-11-28
  • 打赏
  • 举报
回复
这是我写的~


//其实完全可以用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;


kebin0001 2010-11-27
  • 打赏
  • 举报
回复
int[] a = {1,2,3,4,5,6,7,8,9,10};
铁匠梁老师 2010-11-27
  • 打赏
  • 举报
回复
数组涉及到泛型的概念
wangyi1634313076 2010-11-27
  • 打赏
  • 举报
回复
对不起,这才是我想要的,没有把自己需求表达清楚,这也是问了老师,得清了题意,才用数组解决的。抱歉了!
wangyi1634313076 2010-11-27
  • 打赏
  • 举报
回复
import java.util.*;

public class ManageAge
{
public static void main(String[] args)
{
Student s=new Student();
s.manageIndex();
s.storeAge();
}
}

class Student
{
int[] age;//用来存放学生年龄的数组
int [] index;//用来存放age数组的索引的数组
Scanner sc;

//构造函数 初始化属性 将index 的长度定义为10
public Student()
{
this.index=new int[10];
sc=new Scanner(System.in);
age=new int[10];
}

//对索引数组进行处理 使其为10个不相同的随机数(注意:变化范围为0-9)
//通过while循环不停的生成随机数,直到生成一个不重复的为止
public void manageIndex()
{


int tmp = -1;
Random random = new Random();
boolean repeat = false;
for (int i = 0; i < 10; i++)
{
repeat = true;
while (repeat)
{
repeat = false;

tmp = random.nextInt(10);
for (int j = 0; j < i; j++)
{
if (tmp == index[j])
{
repeat = true;
break;
}
}
}

index[i] = tmp;

}

}

//对age数组进行赋值 用上面的index数组作为下标 可保证每次为随机索引 而且不会相同
//依次输入学生的年龄 同时打印索引
//最后统一打印age数组的元素
public void storeAge()
{
System.out.println("请依次输入10个学生的年龄");
for(int i=0;i<age.length;i++)
{

age[index[i]]=sc.nextInt();
System.out.println("索引为:"+index[i]+" 年龄为:"+age[index[i]]);
}
System.out.println("输入完毕,10个学生年龄依次为:");
for(int i=0;i<age.length;i++)
{


System.out.print("a"+i+"="+age[i]+" ");
}
}

}
yuanyue0540 2010-11-27
  • 打赏
  • 举报
回复
int arr[] = new int arr[10];
for(int i = 0;i<10;i++){
arr[i]=i;

}
没有重复?传什么值啊~~~
ZZZ5512536 2010-11-27
  • 打赏
  • 举报
回复
1L那样最简单了··如果没特别要求的话就可以那样
zengweifu11 2010-11-27
  • 打赏
  • 举报
回复
public int[] Ctnumber()

{
int i = 0;
int unmber[] = new int[20];
for (i = 0; i < 10; i++) {
unmber[i] = (int) (Math.random() * 10);
System.out.print(unmber);
}
return unmber;
}
//这是写一个返回数组类型的方法
zengweifu11 2010-11-27
  • 打赏
  • 举报
回复
public static void main(String[] args)

{
int i = 0;
int unmber[] = new int[20];
for (i = 0; i < 10; i++) {
unmber[i] = (int) (Math.random() * 10);
System.out.print(unmber[i]);
}

}
//随机生成10个1-10的数字
//打印出来的效果
TKD03072010 2010-11-27
  • 打赏
  • 举报
回复
1L的实现咯
zzbatluzhou 2010-11-27
  • 打赏
  • 举报
回复
呵呵。。。
  • 打赏
  • 举报
回复
如果没有特别要求的话,1L的就可以
「已注销」 2010-11-26
  • 打赏
  • 举报
回复
System.out.println("路过……");
zhu6100441 2010-11-26
  • 打赏
  • 举报
回复
1L,9L的都能实现。
数组的基础啊,小学老师知道你在上面这样问,会哭的。
周靖峰 2010-11-26
  • 打赏
  • 举报
回复
使用Set类试试吧,Set类可以不包含重复的元素


import java.util.*;

public class Test {

public static void main(String[] args) {
Set<String> s = new HashSet<String>();
Scanner scanner = new Scanner(System.in);
String str = scanner.nextLine();
while (!str.equals("exit")) { //当输入的是exit时退出
s.add(str);
str = scanner.nextLine();
}
scanner.close();
Iterator<String> iterator = s.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
}
}
一夜相思愁 2010-11-26
  • 打赏
  • 举报
回复
我表示很无奈。。
无法帮助到你了。
问的问题太抽象了,搞的我都有点对不起我的小学老师了。
hepehuan 2010-11-26
  • 打赏
  • 举报
回复
这应该是基础,先了解先数组吧!
cuiyanlei2010 2010-11-26
  • 打赏
  • 举报
回复
一楼的好棒!~~~
liukelin 2010-11-26
  • 打赏
  • 举报
回复
不把问题说清楚 谁能帮你解决 扯淡
gujinf2008 2010-11-26
  • 打赏
  • 举报
回复
还是去打酱油吧。
加载更多回复(1)

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧