2016-11-04 3 views
-1

Я делаю этот код C# с ubuntu.Ошибка в коде, развернутом в C#

///Uses swap method to reverse; need to traverse only half of the array. 
public static stringReverseString2(string str) 
{ 
    char[] chars = str.ToCharArray(); 
    for (int i =0, j = str.Length - 1; i < j; i++, j--) 
    { 
    char c = chars[i]; 
    chars[i] = chars[j]; 
    chars[j] = c; 
    } 
    return new string(chars); 
} 

Но когда я скомпилировать его я получаю этот выход

c++1.c:2:1: error: expected unqualified-id before ‘public’ 
public static stringReverseString2(string str) 
^ 

Как я могу решить это?

+0

Я пробовал ваш код, и он меняет всю строку, учитывая, что у нас есть строка «123456789», каков будет ваш желаемый результат? – Innat3

+0

Сообщение об ошибке сообщает о чем-то неожиданном перед ключевым словом 'public', и вы отправили только метод, начинающийся с ключевого слова' public'. Совершенно очевидно, что в вашем вопросе отсутствует только соответствующая часть кода. –

+1

Кстати, вы уверены, что не пытаетесь скомпилировать код C# с компилятором C++ (просто идея, когда я вижу 'C++' в сообщении об ошибке)? –

ответ

1

ваш метод отсутствует возвращаемое значение

после public static необходимо указать тип, который вы возвращаете: string

public static string stringReverseString2(string str) 

или вы можете просто добавить пробел в имени

public static string ReverseString2(string str) 
0

Измените способ, чтобы он выглядел так:

public static string StringReverseString2(string str) 
{ 
    char[] chars = str.ToCharArray(); 
    for (int i = 0, j = str.Length - 1; i < j; i++, j--) 
    { 
     char c = chars[i]; 
     chars[i] = chars[j]; 
     chars[j] = c; 
    } 
    return new string(chars); 
} 
0

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

использование строки строителя вместо этого, и добавить тип возврата к вам метод подписи

public static StringBuilder ReverseString2(StringBuilder str) 
{ 
    for (int i =0, j = str.Length - 1; i < j; i++, j--) 
    { 
    var c = str[i]; 
    str[i] = str[j]; 
    str[j] = c; 
    } 
    return str; 
} 
0

Я думаю, что у вас есть удаленное место по ошибке от public static string ReverseString2(string str).

Вы также можете сделать это.

public static string ReverseString2(string str) 
{ 
    char[] chars = str.ToCharArray(); 
    Array.Reverse(chars); 
    //for (int i = 0, j = str.Length - 1; i < j; i++, j--) 
    //{ 
    // char c = chars[i]; 
    // chars[i] = chars[j]; 
    // chars[j] = c; 
    //} 
    return new string(chars); 
} 
Смежные вопросы