为了账号安全,请及时绑定邮箱和手机立即绑定

每次在android范围内从数组中获取唯一编号

每次在android范围内从数组中获取唯一编号

四季花海 2021-09-15 10:52:49
我想制作一个应用程序,它将数字存储在数组中,并在单击按钮时存储。该数组将从该数组中获取一个唯一的随机数并将其添加到一个 HashSet 中。这个过程会一直持续到数组变空。并且,当数组为空或HashSet已满时,它会给出“Array is empty and Hashset is full”的消息。我自己尝试过,但我无法让它工作。这是我的代码: activity_main.xml<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    android:padding="8dp">    <Button        android:id="@+id/array1"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_alignParentBottom="true"        android:layout_alignParentStart="true"        android:layout_marginBottom="172dp"        android:layout_marginStart="130dp"        android:text="Button" />    <TextView        android:id="@+id/text1"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_alignParentStart="true"        android:layout_centerVertical="true"        android:layout_marginStart="152dp"        android:text="TextView" />    <TextView        android:id="@+id/textView3"        android:layout_width="276dp"        android:layout_height="wrap_content"        android:layout_alignParentTop="true"        android:layout_alignStart="@+id/array1"        android:layout_marginStart="-37dp"        android:layout_marginTop="140dp"        android:text="Range from 0 to 10"        android:textSize="20sp" /></RelativeLayout>
查看完整描述

1 回答

?
森栏

TA贡献1810条经验 获得超5个赞

我写了一些代码让你弄清楚是什么问题。我发现的一些问题是,首先list.remove(num)将参数作为index或 an Object,因此您应该将 num 转换为Integer。否则,它会抛出ArrayIndexOutOfBoundException。其次,我无法达到使用for-loopinarrayExist方法的目的。你不需要它,只要你调用onClick这个动作发生。这是一个在 Java 中正常运行的测试代码。


@Test

public void fromArrayToSet() {


    List<Integer> list = createList();

    HashSet<Integer> set = new HashSet<>();

    System.out.println("ListBefore = " + list);

    System.out.println("SetBefore = " + set);

    for(int i = 0; i < 10; i++) {

        arraylist((ArrayList) list, set );

    }

}


public void arraylist(List<Integer> list, HashSet set){

    int random = new Random().nextInt(list.size());

    arrayExist(list, list.get(random), set);

}


public void arrayExist(List<Integer> list ,int num, HashSet set){


    set.add(num);

    list.remove((Integer) num);


    System.out.println("ListAfter = " + list);

    System.out.println("SetAfter = " + set);

}


public List<Integer> createList() {


    List<Integer> list = new ArrayList<Integer>(10);

    for(int i = 0;i<10;i++){

        list.add(i);

    }

    return list;

}



查看完整回答
反对 回复 2021-09-15
  • 1 回答
  • 0 关注
  • 125 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信