Предполагая, что вы хотите разделить это на два разных числа на основе нечетных и четных индексов, т. Е. 13
и 24
в тестовом значении, есть три проблемы с вашим кодом:
- Вы можете хранить только один номер в
int
; вам понадобится int[]
для хранения двух чисел; - Вы в настоящее время перезаписываете предыдущее значение числа вместо его объединения;
- Второй параметр
Substring()
- это число символов, которые вы хотите получить после начального индекса, поэтому он должен быть 1
, а не i+1
.
Чтобы решить эти проблемы, вам, вероятно, понадобится что-то похожее на:
var number = 1234;
var the_two_numbers = new int[2];
string z = Convert.ToString(number);
for (int i=0; i<z.Length; i++) {
the_two_numbers[i%2] = Convert.ToInt32(the_two_numbers[i%2].ToString() + z.Substring(i, 1));
}
Обратите внимание на следующее:
- Я сделал
the_two_numbers
массив вместо int
; - Вместо условного исключения нечетных индексов, я вместо этого использую это для определить, какой индекс
the_two_numbers
записать в ([i%2]
); и - Вместо просто , устанавливающего значение в текущем индексе для переменной, я объединяю его с любыми предыдущими значениями.
С the_two_numbers
, установленным как массив, вы можете затем получить первое значение (13
), используя the_two_numbers[0]
, а второе значение (24
), используя the_two_numbers[1]
.