2017-06-20 78 views
2

我是一名爲學校做作業的學生。我的問題是,我試圖根據一個數組的長度收集大量用戶輸入,並將這些輸入返回到一個長度相同的新數組中。第二個數組不能被硬編碼,因爲它必須是動態的,並根據第一個數組中有多少用戶輸入進行更改。這是我的代碼。將用戶輸入返回到未定義的數組中?

public static decimal[] PromptForDecimals(string[] array1) 
{ 
    for (int i = 0; i < array1.Length; i++) 
    { 
     Console.WriteLine(""); 
     string inputString = Console.ReadLine(); 
     decimal input; 
     while (!decimal.TryParse(inputString, out input)) 
     { 
      Console.WriteLine("Please enter a number value."); 
      inputString = Console.ReadLine(); 
     } 

     decimal[] inputArray; 
     inputArray[i] = input; 

     return inputArray; 

基本上,我試圖創建decimal值的數組,以對應於的array1的字符串值。問題是我無法將值添加到未定義的數組中,因爲它們超出了範圍。我曾嘗試使用ArrayList作爲inputArray,但我得到無效的轉換錯誤。

有人有什麼想法嗎?

回答

0
public static decimal[] PromptForDecimals(string[] array1) 
    { 
     decimal[] inputArray = new decimal[array1.Length]; 
     for (int i = 0; i < array1.Length; i++) 
     { 
      Console.WriteLine(""); 
      string inputString = Console.ReadLine(); 

      decimal input; 
      while (!decimal.TryParse(inputString, out input)) 
      { 
       Console.WriteLine("Please enter a number value."); 
       inputString = Console.ReadLine(); 
      } 

      inputArray[i] = input; 

      return inputArray; 
0

您可以使用它。我希望它能爲你工作。

public static decimal[] PromptForDecimals(string[] array1) 
{ 
    decimal[] inputArray = new decimal[array1.Length]; 
    for (int i = 0; i < array1.Length; i++) 
    { 
     Console.WriteLine(""); 
     string inputString = Console.ReadLine(); 

     decimal input; 
     while (!decimal.TryParse(inputString, out input)) 
     { 
      Console.WriteLine("Please enter a number value."); 
      inputString = Console.ReadLine(); 
     } 

     inputArray[i] = input;     
    } 

    return inputArray; 
} 
0

首先,你應該把return語句和inputArray之外的聲明循環。

其次,要創建您的inputArray,您只需創建一個長度爲inputArray.Length的數組!

// remember to put this before the for loop. 
decimal[] inputArray = new decimal[inputArray.Length]; 

在for循環中,你可以接着寫:

// don't redeclare inputArray again! 
inputArray[i] = input; 

後for循環,返回inputArray

return inputArray; 
0

下面是解決方案。

1)聲明decimal[] inputArray你只聲明瞭一個數組,但沒有創建一個數組。

2)你進入循環之前,必須創建它

3)如下圖所示,在創建數組時,你可以給它的相同數量的元素爲inputArray

public static decimal[] PromptForDecimals(string[] array1) 
{ 
    decimal[] inputArray = new decimal[array1.Length]; 
    for(int i = 0; i < array1.Length; i++) 
    { 
     Console.WriteLine(""); 
     string inputString = Console.ReadLine(); 

     decimal input; 
     while(!decimal.TryParse(inputString, out input)) 
     { 
      Console.WriteLine("Please enter a number value."); 
      inputString = Console.ReadLine(); 
     } 
     inputArray[i] = input; 
    } 

    return inputArray; 
} 
0

讓你生活更輕鬆,並使用LINQ。所有創建數組並確保您使用正確的索引都是爲您完成的。

public static decimal[] PromptForDecimals(string[] array1) 
{ 
    return 
     array1 
      .Select(x => 
      { 
       Console.WriteLine(x); 
       string inputString = Console.ReadLine(); 
       decimal input; 
       while (!decimal.TryParse(inputString, out input)) 
       { 
        Console.WriteLine("Please enter a number value."); 
        inputString = Console.ReadLine(); 
       } 
       return input; 
      }) 
      .ToArray(); 
} 
相關問題