【问题标题】:ArrayList is picking randomlyArrayList 随机选择
【发布时间】:2017-07-14 04:39:38
【问题描述】:

大家,我只是一个初学者,所以请耐心等待;) 我有一个ArrayList,它是随机选择到我的cardView中的,如果我想按顺序一个一个选择,我应该怎么做?

 public static class Questions {
        private String mQuestion;
        private String mAnswer;


        // statyczne tablice, na podstawie których zostaną uzupełnione obiekty artykułów
        private static String[] sQuestions = {"1 Lorem ipsum dolor sit amet",
                "2 Etiam sit", "3 Cras vel lorem",
                "Cras suscipit, urna at aliquam rhoncus",
                "Phasellus congue lacus eget neque",
                "Phasellus pharetra nulla ac diam"};


        private static String[] sAnswers = {"1 Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin nibh augue, suscipit a, scelerisque sed, lacinia in, mi. Cras vel lorem. Etiam pellentesque aliquet tellus. Phasellus pharetra nulla ac diam.",
                "2 Quisque semper justo at risus. Donec venenatis, turpis vel hendrerit interdum, dui ligula ultricies purus, sed posuere libero dui id orci",
                "3 Nam congue, pede vitae dapibus aliquet, elit magna vulputate arcu, vel tempus metus leo non est. Etiam sit amet lectus quis est congue mollis.",
                "Phasellus congue lacus eget neque. Phasellus ornare, ante vitae consectetuer consequat, purus sapien ultricies dolor, et mollis pede metus eget nisi.",
                "Praesent sodales velit quis augue. Cras suscipit, urna at aliquam rhoncus, urna quam viverra nisi, in interdum massa nibh nec erat."};

        public Questions() {
            Random arry = new Random();

            mQuestion = sQuestions[arry.nextInt(sQuestions.length)];
            mAnswer = sAnswers[arry.nextInt(sAnswers.length)];
        }

        public String getTitle() {

            return mQuestion;
        }

        public String getContent() {
            return mAnswer;
        }
    }

【问题讨论】:

  • 您正在使用 Random 获取用于访问数组的 int。显然它会给出随机项目。

标签: java android android-studio arraylist


【解决方案1】:

需要更改这些行以指向所需的索引。

 mQuestion = sQuestions[arry.nextInt(sQuestions.length)];
 mAnswer = sAnswers[arry.nextInt(sAnswers.length)];

例如,如果您想要 5 点的问题和答案,那么您需要编写

mQuestion = sQuestions[4];
mAnswer = sAnswers[4];

如何获得数字(在我的示例中为 4)是您的选择。带有增量的 for 循环或 while 循环将起作用。从键盘输入直接传递数字也可以。

【讨论】:

  • 您的意思是数组的索引 4 而不是 5。5 超出范围。
  • 我想提供一个例子。事实上,我没有注意到他总共只有 5 个问题。我会修改我的答案。谢谢你的收获!
【解决方案2】:

你的数组是随机返回的,因为你是这样写的。 首先,看看你的代码

        Random arry = new Random();
        mQuestion = sQuestions[arry.nextInt(sQuestions.length)];
        mAnswer = sAnswers[arry.nextInt(sAnswers.length)];

由于 random 函数,您正在获取数组的随机元素。 你需要做的是用你想要的元素的索引替换索引部分,也就是这个[arry.nextInt(sQuestions.length)]。如果你想要第一个 -> 0,第二个 -> 1 等等。不要超过 arr.length-1 否则会抛出异常。

总而言之,把你想得到的item的索引这样写,例如:

    mQuestion = sQuestions[0];
    mAnswer = sAnswers[0];

吸气剂会给你“1 Lorem ipsum dolor sit amet”和“1 Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin nibh augue, suscipit a, scelerisque sed, lacinia in, mi. Cras vel lorem. Etiam pellentesque aliquet tellus. Phasellus pharetra nulla ac diam."

制作计数器,为函数调用时如何返回元素创建自己的逻辑。

【讨论】:

  • 谢谢,但我怎样才能像 1 和 1 然后 2 和 2、3 和 3 等那样自动执行此操作?像这样imgur.com/a/2sRHX 类似循环的东西
  • getTitle(){ if(counter == 5){ counter = 0; } temp = counter; counter++; return array[counter]; } 然后为另一个 getter 创建一个计数器。这会做到的。希望这会有所帮助
  • mQuestion = sQuestions[counter]; return mQuestion; 你使用我在之前评论中为计数器写的逻辑。它会工作
  • 感谢您的回答,atm 我正在尝试按您说的做,但对我不起作用,可能我做错了,但我想弄清楚
【解决方案3】:

你是这个意思吗?

int a=0;
while (a<arry.length)
{
        mQuestion = sQuestions[a];
        mAnswer = sAnswers[a];
   a++;
}

【讨论】:

    【解决方案4】:

    要遍历数组,您可以执行以下操作:

    for (int i = 0; i < array.length; i++) {
        String s = array[i];
        // Do what you want with your string s
    }
    

    【讨论】:

      【解决方案5】:

      为什么不添加一个全局变量作为数组的最大值呢?那么您可以在每次调用 Questions 时对其进行迭代。

      if(questionPlace < max){
       //assign values, questionPlace++;
      }else{
       questionPlace = 0;
       //assign values
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-30
        • 1970-01-01
        • 2011-06-30
        • 2011-04-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多