首页 > 解决方案 > 如何将嵌套的 For 循环输出动态输入到 ArrayList-Android

问题描述

我是 Android 的初学者,我编写了一个代码来找出两个数字(x 和 y)之间的素数。

我已经成功地找出了质数,但我的应用程序有一个按钮(“b2”)和:onclick(“更改订单”)附加到它,所以我需要帮助的是。

我正在尝试将嵌套 for 循环的输出设置为 ArrayList,但无法为每次迭代动态设置。我基本上想用“Collections.reverse()”对arraylist的元素重新排序。

x = Integer.parseInt(et1.getText().toString());
y = Integer.parseInt(et2.getText().toString());

for (i = x; i <= y; i++) {

               if (i == 1 || i == 0)
                   continue;
               flag = 1;

               for (j = 2; j <= i / 2; ++j) {
                   if (i % j == 0) {
                       flag = 0;
                       break;
                   }
               }


               if (flag == 1) {
                   myList = new ArrayList<Integer>();
                 
                   for (flag=i; i>0;){
                       myList.add(i);   //this i suppose will do the trick

                   }

                   fResult = new String(myList.toString());
                   t1.setText(fResult);
                   t1.setTextColor(getResources().getColor(R.color.myColor));
                   t2.setTextColor(getResources().getColor(R.color.myColor));
                   Toast.makeText(this, R.string.df, Toast.LENGTH_LONG).show();


               }
           }
       };

public void CloseKeyboard() {
       View view = getCurrentFocus();

       InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
       imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
   }

   public void changeOrder(View view) {
       b2 = (Button) findViewById(R.id.myButton2);
       Collections.reverse(myList);
       t1.setText(myList.toString());
       b2.setText(R.string.chnge_text);

   }

标签: javaandroidandroid-studio

解决方案


使用 ArrayList num = new ArrayList<>();

它将工作并动态附加您的 for 循环的输出。有关更多详细信息,您可以参考https://www.w3schools.com/java/java_arraylist.asp

在进一步检查时,您应该在循环的开头定义 myList。发生的情况是,每次当 flag==1 条件满足时,您都在创建一个新的 ArrayList,因此以前的数据会丢失,而您只剩下最后一个值。


推荐阅读