62,614
社区成员
发帖
与我相关
我的任务
分享
//其实完全可以用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;
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());
}
}
}