2016-04-03 15 views
-1

整個程序列出後,但我唯一的問題是ToUppers()方法。我只是想讓這個方法迭代我的數組中的每個字符串,然後使所有的東西都大寫。不能讓我的方法大寫我的字符串數組

 private static string[] ToUppers(string[] stringToUpperArrays) 
     { 
      string stringer; 

      foreach (string value in stringToUpperArrays) 
      { 
       stringer = value.ToUpper(); // <== this line highlighted 
       Console.WriteLine(stringer); 
      } 
      return stringToUpperArrays; 
     } 

程序執行,它打印後,在控制檯上,並列出一個NullReferenceException,並着重介紹了stringer = value.ToUpper();

整個程序

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using Utility; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      //Mark Bouwman 
      //CNT A01 
      //ICA18 
      //April 2nd 

      string answer; 
      int numInArray; 
      string[] stringArrays; 
      string[] stringArraysToDisplay; 
      string[] stringToUpperArrays; 

      //TITLE 
      Console.WriteLine("\t\tStringy"); 

      do 
      { 
       numInArray = Utility.Utility.GetInt(2, 10, "Enter the size of the array from 2 to 10: "); 
       stringArrays = CreateArray(numInArray); 
       stringArraysToDisplay = Display(stringArrays); 
       stringToUpperArrays = ToUppers(stringArrays); 






       //aksing to run program again 
       Console.Write("Run program again? yes or no: "); 
       answer = Console.ReadLine();     
      } 
      while (answer.Equals("yes", StringComparison.CurrentCultureIgnoreCase)); 
     } 

     private static string[] CreateArray(int numInArray) 
     { 
      int index; 
      string[] stringArray; 

      stringArray = new string[(numInArray + 1)]; 
      for (index = 0; index < numInArray; ++index) 
      { 
       Console.Write("Enter string #" + (index + 1) + " "); 
       stringArray[index] = Console.ReadLine(); 
      } 
      return stringArray; 
     } 

     private static string[] Display(string[] stringArraysDisplay) 
     { 
      foreach (string value in stringArraysDisplay) 
      { 
       Console.WriteLine(value); 
      } 
      return stringArraysDisplay; 
     } 

     private static string[] ToUppers(string[] stringToUpperArrays) 
     { 
      string stringer; 

      foreach (string value in stringToUpperArrays) 
      { 
       stringer = value.ToUpper(); 
       Console.WriteLine(stringer); 
      } 
      return stringToUpperArrays; 
     } 
    } 
} 

回答

-1

你應該刪除+ 1時您正在初始化陣列

stringArray = new string[(numInArray)]; 

在此m ethod

private static string[] CreateArray(int numInArray) 
+0

這不回答這個問題 – Vincent

0

CreateArray定義數組的大小numInArray + 1但你填充數組只numInArray串,即最後一個索引是空的。當你在空索引上嘗試value.ToUpper();時,你會得到異常。

CreateArray變化

stringArray = new string[(numInArray + 1)]; 

stringArray = new string[numInArray]; 

或更改

for (index = 0; index < numInArray; ++index) 
{ 
    Console.Write("Enter string #" + (index + 1) + " "); 
    stringArray[index] = Console.ReadLine(); 
} 

for (index = 0; index < stringArray.Length; ++index) 
{ 
    Console.Write("Enter string #" + (index + 1) + " "); 
    stringArray[index] = Console.ReadLine(); 
} 
相關問題