java - ArrayList不存储值

标签 java android random arraylist logcat

我对 ArrayList 的概念很陌生。我使用它们是因为我想要一个动态数组,它的大小不受它可以按顺序保存的值的数量的限制。但我使用的方法没有正确存储值。我只保留一个值为1。我的代码如下:

public void Rand(){
Random rand = new Random();
int Val = rand.nextInt(5); 
ArrayList<Integer> ValList = new ArrayList<Integer>();
ValList.add(Val);
Log.d("LOOK", Integer.toString(ValList));   
Log.i("VALUE LIST ", ValList.size()+" <<<<LIST HERE"); }

这个过程在 oncreate 中调用,然后在循环中返回。理想情况下,每次此类运行时,都会将新的随机数按顺序添加到数组中。

这是logcat上的相关信息:

03-05 19:15:15.020: D/LOOK(21325): 3
03-05 19:15:15.020: I/VALUE LIST(20883): 1 <<<<LIST HERE
03-05 19:15:15.040: D/LOOK(21325): 5
03-05 19:15:15.040: I/VALUE LIST(20883): 1 <<<<LIST HERE

正如您所看到的,即使随机值不是 1,它也只存储值 1。我是否使用了错误的数组类型或错误地实现了它?

我想看到的输出是这样的:

03-05 19:15:15.020: D/LOOK(21325): 3
03-05 19:15:15.020: I/VALUE LIST(20883): 3 <<<<LIST HERE
03-05 19:15:15.040: D/LOOK(21325): 5
03-05 19:15:15.040: I/VALUE LIST(20883): 3, 5 <<<<LIST HERE

最佳答案

因为,你的ArrayList<Integer> ValList = new ArrayList<Integer>();本地范围为 Rand()仅方法,因此每次调用 Rand() 时它都有新实例功能。

只需声明 ArrayList<Integer> ValList = new ArrayList<Integer>();作为类级别范围。

并使用,

喜欢,

// Class level member declaration
ArrayList<Integer> ValList = new ArrayList<Integer>();

public void Rand(){
          Random rand = new Random();
          int Val = rand.nextInt(5); 

          ValList.add(Val);
          Log.d("LOOK", ValList.toString()); 
          // Also here you are printing size of Arraylist not a content of arraylest
          Log.i("VALUE LIST ", ValList.size()+" <<<<LIST HERE"); 
 }

要打印特定的对象值,您必须使用 .get() 从 ArrayList 获取对象与对象的位置,或使用 .toString()打印所有列表内容

Log.i("VALUE LIST ", ValList.toString()+" <<<<LIST items"); // using .toString() to print all contents of List

更新:

因为我对这一行抛出异常有疑问(但从你的 logcat 来看它工作正常,因为列表只包含一项)

Log.d("LOOK", Integer.toString(ValList)); 

当您尝试打印列表 valList 的值时,只需使用 .toString()就像,ValList.toString()

关于java - ArrayList不存储值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28886092/

相关文章:

android - 更改 compileSdkVersion 会影响应用程序在运行时的行为吗?

android - Android Instant App 与应用程序流有何不同?

java - 熟悉Java中的线程: Why does this program's runtime increase with increasing number of threads

java - 不用修改原代码,用Maven替换JAVA代码中的一个常量

java - 从谷歌电子表格获取 JSON

java - 安卓 : Making simple code. 干

objective-c - 从数组中读取随机值

javascript - 从纯文本文件数据库中获取随机行

java - 在我的例子中,只需要在我的 ListView 中显示一个对象(只有标题)

Java、StaX 简单代码但出现解析错误、文件过早结束