2015-04-29 2 views
-1

Я пытаюсь написать код для разделения первого символа из строки, как: Input является = This Is Stackoverflow выхода (который я хочу) = TIS Но Я получаю Unhandheld Exception: System.Indexoutofbound exception: Index was outside the bound of arrayUnhandheld Исключения: System.Indexoutofbound исключение: Индекс находился вне границы массива

// мой код является

using System; 
public class n2 
{ 

    public static void Main(String[] args) 
    { 

     String s1; 
     Console.WriteLine("Enter the string"); 
     s1=Console.ReadLine(); 
     Console.WriteLine(s1); 
     char[] charArr=s1.ToCharArray(); 

     for(int i=0;i<s1.Length;i++) 
     { 
      Console.WriteLine(charArr[i]); 
     } 

     Console.WriteLine(s1.Length); 
     char[] n1= new char[s1.Length]; 
     n1[0]=charArr[0]; 

     for(int j=1;j<s1.Length-1;j++) 
     {    
       if(charArr[j]==' ') 
       { 
       for(int k=1;k<10;k++) 
        {  
         n1[k]=charArr[++j]; 
        } 
          }  
     } 

     for(int i=0;i<10;i++) 
     { 
      Console.Write(n1[i]); 
     } 

    } 
} 

Я не знаю ошибку, пожалуйста, предложения. Заранее спасибо ....

+1

Во второй переменной цикла j значение увеличивается в два раза. Это вызывает это исключение. –

+1

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

+0

Задача читается как какая-то домашняя работа ^^ Разве ваш любимый курс, @neeraj, не так ли? –

ответ

0

Непосредственной причиной ошибки в

n1[k]=charArr[++j]; 

Однако регулярные выражения и Linq, кажется, лучший подход здесь:

String source = "This Is Stackoverflow"; 

    // "TIS" 
    String result = String.Join("", Regex 
    .Matches(source, @"(^|)\w") 
    .OfType<Match>() 
    .Select(m => m.Value.Trim())); 
+0

Спасибо большое @ Dmitry –

0

Проблема в коде в строке n1[k]=charArr[++j]; Вы должны проверить значение j перед тем charArr[++j] в if пункте. Что-то как следует,

if(j<s1.Length-1) 
{ 
    n1[k]=charArr[j++]; //doing post increment! 
} 
Смежные вопросы