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

我想制作一个应用程序,它将数字存储在数组中,并在单击按钮时存储。该数组将从该数组中获取一个唯一的随机数并将其添加到一个 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>


四季花海
浏览 126回答 1
1回答

森栏

我写了一些代码让你弄清楚是什么问题。我发现的一些问题是,首先list.remove(num)将参数作为index或 an Object,因此您应该将 num 转换为Integer。否则,它会抛出ArrayIndexOutOfBoundException。其次,我无法达到使用for-loopinarrayExist方法的目的。你不需要它,只要你调用onClick这个动作发生。这是一个在 Java 中正常运行的测试代码。@Testpublic void fromArrayToSet() {&nbsp; &nbsp; List<Integer> list = createList();&nbsp; &nbsp; HashSet<Integer> set = new HashSet<>();&nbsp; &nbsp; System.out.println("ListBefore = " + list);&nbsp; &nbsp; System.out.println("SetBefore = " + set);&nbsp; &nbsp; for(int i = 0; i < 10; i++) {&nbsp; &nbsp; &nbsp; &nbsp; arraylist((ArrayList) list, set );&nbsp; &nbsp; }}public void arraylist(List<Integer> list, HashSet set){&nbsp; &nbsp; int random = new Random().nextInt(list.size());&nbsp; &nbsp; arrayExist(list, list.get(random), set);}public void arrayExist(List<Integer> list ,int num, HashSet set){&nbsp; &nbsp; set.add(num);&nbsp; &nbsp; list.remove((Integer) num);&nbsp; &nbsp; System.out.println("ListAfter = " + list);&nbsp; &nbsp; System.out.println("SetAfter = " + set);}public List<Integer> createList() {&nbsp; &nbsp; List<Integer> list = new ArrayList<Integer>(10);&nbsp; &nbsp; for(int i = 0;i<10;i++){&nbsp; &nbsp; &nbsp; &nbsp; list.add(i);&nbsp; &nbsp; }&nbsp; &nbsp; return list;}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java