2013-12-03 6 views
0

У меня вопрос о создании функции сохранения.Отдельные множественные целые числа из строки

Я пытаюсь сохранить строку как отдельный файл, чтобы установить определенные настройки в игре. Таким образом, saveFile будет читать "002007...", имея 002, а затем - 007 уровень игрока.

Я понимаю, как скомпилировать различные переменные в одну строку, но как я могу вернуть ее отдельным переменным?

+1

Я вижу XY проблема здесь. – guness

+0

Пожалуйста, попробуйте некоторые ответы и оставьте отзыв. Примите тот, который лучше всего подходит для вас. –

ответ

0

Вы можете использовать разделитель между значениями вроде этого:

int location = 02; 
int level = 3; 
int powerUps = 46; 
... and so on 

String saveString = location + "#" + level + "#" + powerUps + "#" + ... 

Затем загрузить строку обратно в переменные:

String[] values = saveString.split("#"); 
location = values[0]; 
level = values[1]; 
powerUps = values[2]; 
... and so on 
+0

Хорошо ... спасибо. Я думаю, это должно сработать для меня. – user3062883

-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; 
} 
+0

не компилируется ... – njzk2

+0

также, почему бы не использовать (i + = 3), а не умножать все на 3? – njzk2

+0

, и вы пропустите последний номер, потому что вы выходите из своего цикла слишком рано – njzk2

1

Лучше идти с SQLite или SharedPreferences, если вы действительно хотите, чтобы сохранить настройки для игры на Android ,

С другой стороны, если вы должны придерживаться сохранения String на файл, вы можете захотеть использовать разделитель (т.е. \r\n или # или | бы сделать это) между числами. Поэтому, когда разбор разметки разделителей поможет вам много, но будьте осторожны, когда все усложняется, один String не будет делать это красиво. Тогда вы можете использовать JSON (для простоты я предпочел бы gson), чтобы кодировать ваши настройки в один String и наоборот.

0

Мой совет, чтобы проверить Shared Preferences и вы можете прочитать андроида документация по нему 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 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(""); 
} 
Смежные вопросы