2016-09-28 3 views
1

Я хочу рассчитать целочисленное положение символа строки. Но когда я запускаю этот метод, он вычисляет только первый символ.Преобразуйте символы строки в целое число в алфавитном порядке?

я должен иметь выход так:

A = 1 + D = 4 + E = 5, => 10

private int letterNumber(string letter) 
{ 
    char c = letter[0]; 
    for (int i = 0; i < letter.Length; i++) 
    { 
     c = (char)letter[i]; 
     return char.ToUpper(c) - 64; 
    } 
    return c; 
} 
+1

Ваш оператор возврата находится в вашей петле, поэтому почему он отменяется после первого символа. – ThePerplexedOne

ответ

0

Вы возвращаетесь внутри цикла, что не является желаемым поведением. С небольшим рефакторингом мы можем немного почистить его:

private int letterNumber(string letter) 
{ 
    int sum = 0; 
    for (int i = 0; i < letter.Length; i++) 
    { 
     char c = letter[i]; // declare it in loop - you overwrite it here anyway 
     sum += char.ToUpper(c) - 64; 
    } 
    return sum; 
} 
+0

спасибо, что это работает: P – id94

0

Это из-за этого

return char.ToUpper(c) - 64; 

он выходит метод и возвращает первое значение, попробуйте сохранить результаты в переменной и вернуть ее, как это

private int letterNumber(string letter) 
{ 
    int sum = 0; 
    char c = letter[0]; 
    for (int i = 0; i < letter.Length; i++) 
    { 
     c = (char)letter[i]; 
     sum += char.ToUpper(c) - 64; 

    } 

    return sum; 
} 

Кроме того, A = 1 + D = 4 + E = 4, => 9 :)

Смежные вопросы