Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在每个试验中将字符串存储为不同的变量_Java_Android - Fatal编程技术网

Java 在每个试验中将字符串存储为不同的变量

Java 在每个试验中将字符串存储为不同的变量,java,android,Java,Android,我有一个很奇怪的请求,因为大多数人从未处理过这个问题 每次我的应用程序运行时,我都会得到一个值,比如ScoreActivity.score(其中ScoreActivity是出现该值的活动,而score是实际值)。每次我到达这个特定的活动,比如说ResultActivity,我都需要将ScoreActivity.score存储为一个变量。我已经完成了这项工作 int var1 = ScoreActivity.score 现在,问题来了。我希望每次用户玩这个游戏时,ScoreActivity.sc

我有一个很奇怪的请求,因为大多数人从未处理过这个问题

每次我的应用程序运行时,我都会得到一个值,比如
ScoreActivity.score
(其中
ScoreActivity
是出现该值的活动,而
score
是实际值)。每次我到达这个特定的活动,比如说
ResultActivity
,我都需要将
ScoreActivity.score
存储为一个变量。我已经完成了这项工作

int var1 = ScoreActivity.score
现在,问题来了。我希望每次用户玩这个游戏时,
ScoreActivity.score
都存储为不同的变量。假设用户完成游戏,在
ScoreActivity
处获得
score
,并移动到
ResultActivity
页面。我希望此
ScoreActivity.score
存储为

int var1 = ScoreActivity.score
int var2 = ScoreActivity.score
但是,下次用户完成游戏并获得分数时,我希望
ScoreActivity.score
存储为

int var1 = ScoreActivity.score
int var2 = ScoreActivity.score
此外,我希望
var1
中的值保留为第一个ScoreActivity.score。有人知道我会怎么做吗?

好吧,用纯Java(在你的应用程序中与Android存储无关,我真的不能说太多,因为到目前为止我从未尝试过这么做),我看到了一些方法

  • 首先,如果你知道你会得到多少分数,你可以使用一个简单的数组。每次插入新值时,只需检查到目前为止填充数组的数量
  • 另一个解决方案是查看Java集合接口,以及实现它的所有主要类。在这种情况下,你可以很好地利用它们,特别是如果你以后需要排序分数的话
  • 否则,您可以只使用一个字符串,用一个字符分隔元素,每次添加一个分数。例如:
    String scores=score1+“|”+score2+“|”+ScoreActivity.score
    您只需使用正则表达式解析文本即可获得正确的信息。当然,这不是最好的顺序内的信息
其他人可能会对如何将其存储在应用程序中给出更好的建议,但这基本上是我在Java中所采用的方法。我将亲自前往第二个,收集

希望有帮助


编辑:正如有人所说,您可以使用数据库存储数据,也可以将其放入文件中。这是第四种解决方案,您可以将数据(加密与否,由您决定)放入一个文件中,稍后再检索。

如果您担心应用程序关闭和重新启动,并以某种方式恢复特定活动的分数,您可能需要使用一些持久存储

您的参数有点不清楚,但假设用户通过ScoreActivity进行的每个会话都会生成一个唯一的分数,您希望该分数与特定的活动相关联,您可以将该值存储在SharePreferences中,并在稍后使用特定标识符启动活动时检索该值

此处参考:


因此,您基本上要存储一个KV对,如{“scoreSession1”,10}。

听起来您想要一个ArrayList?然后只需要
ArrayList分数
array和
scores.add(ScoreActivity.score)
@Uxonith,但在应用程序关闭并重新启动后,如何防止
ArrayList
刷新?您需要将分数存储到文件中,或使用database@etherous我在查看
共享参考资料
,但我不知道如何调整它以适应我的使用,或者这是否是一个好主意。在适当的时间序列化数据,然后在应用程序再次启动时反序列化。JSON有效。你也可以选择
singleton
方法,这样整个应用程序都可以使用它。你认为“SharedReferences”是存储大量
分数的方式吗?我认为最好保留偏好,嗯,偏好;至少我不能说我见过像你一样推荐的,你可以用它来做除偏好之外的其他事情。请查看链接,并在标题为“用户首选项”的侧边栏上记下他们的评论。这是一个足够的短期解决方案——如果benz希望将整个历史记录保存在其他地方显示,那么使用不同的数据存储解决方案可能会更好。是的,我读过。我们可以讨论这是否意味着潜在的大量分数。我相信这句话的要点更多的是动态组件,它们会因用户而有所不同,而不是大量的原始数据。你的链接也这么说。