我对制作保存功能有疑问。
我正在尝试将字符串保存为单个文件以设置游戏的特定设置。因此,saveFile会读取"002007..."
,其中002
是玩家的位置,然后是007
玩家的等级。
我理解如何将各种变量编译成单个字符串,但是如何将其返回到单个变量?
答案 0 :(得分:1)
如果您真的想在Android上保存游戏设置,最好使用SQLite
或SharedPreferences
。
另一方面,如果您必须坚持在文件中保存String
,则可能需要使用分隔符(即\r\n
或#
或{{1}在数字之间会这样做。因此,虽然解析分隔符会对你有很大的帮助,但是当事情变得复杂时要小心,单个|
将无法很好地完成任务。然后,您可能希望使用JSON(为简单起见,我希望String
)将您的设置编码为一个gson
,反之亦然。
答案 1 :(得分:0)
您可以在值之间使用分隔符,如下所示:
int location = 02;
int level = 3;
int powerUps = 46;
... and so on
String saveString = location + "#" + level + "#" + powerUps + "#" + ...
然后将String加载回变量:
String[] values = saveString.split("#");
location = values[0];
level = values[1];
powerUps = values[2];
... and so on
答案 2 :(得分:0)
我的建议是查看Shared Preferences,您可以在其上阅读Android的文档here。
如果您确实想使用单个String,file方法,我建议使用分隔符。这只是意味着将逗号或其他类型的分隔符放在不同的整数值之间。而不是"002007"
,请将其另存为"002,007"
。例如:
String s = "002,007"
String[] values = s.split(","); // values[0] is "002" and values[1] is "007"
使用.split(String)
命令将返回一个String数组,其中数组中的每个元素包含由参数拆分的String部分,在本例中为:,
如果您想为每个人分隔值,可以这样做:
String s = "002,007;003,008";
String[] people = s.split(";"); // people[0] is "002,007", people[1] is "003,004"
String[][] person = new String[people.length][people[0].split(",").length];
for (int i = 0; i < people.length; i++)
{
person[i] = people[i].split(",");
}
这是数组随后包含的内容:
人[0] [0]是“002”
人[0] [1]是“007”
人[1] [0]是“003”
人[ 1] [1]是“008”
// print it for your own testing
for (String ppl[] : person)
{
for (String val : ppl)
{
System.out.print(val + " ");
}
System.out.println("");
}
答案 3 :(得分:-1)
假设您的所有数字都是3个字符长,您可能希望在以下函数中使用substring(int, int):
public static int[] getIntegersFromString(String numbers){
int[] result = new int[numbers.length()/3];
from(int i=0; i<(numbers.length()/3)-1; i++){
result[i] = numbers.substring(i*3, i*3+2);
}
return result;
}