2017-05-03 60 views
-2

此方法啓動並且用戶可以選擇第一個或第二個文件。我如何製作它,以便myArray根據結果而變化。目前它說myArray在當前上下文中不存在。如果文件2是選擇,那麼我如何設置myArray到該文件的值?修復線性搜索C#

任何幫助表示讚賞。謝謝。

代碼:

public static void search() // Search for values 
    { 
Console.WriteLine("1=Day 2=Depth"); 
int operation = Convert.ToInt32(Console.ReadLine()); 
    if (operation == 1) 
    { 
     String[] myArray = File.ReadAllLines("Data1/Day_1.txt"); 
    } 


    else if (operation == 2) 
    { 
     String[] myArray = File.ReadAllLines("Data1/Months_1.txt"); 
    } 


     Console.WriteLine("Enter number to search"); 
     String myString = Console.ReadLine(); 
     int i = 0; 
     int j = 0; 
     var regex = new Regex(myString); 
     foreach (string array in myArray) 
     { 
      if (regex.IsMatch(array)) 
      { 
       i++; 
      } 

      else if (regex.IsMatch(array)) 
      { 
       j++; 
      } 
     } 

     if (i > 0) 
     { 
      Console.WriteLine("Found match! - {1} Appeared {0} time(s)",i,myString); 
     } 

     else if(j == 0) 
     { 
      Console.WriteLine("No Match for {0} in Data", myString); 
     } 

     Console.ReadLine(); 
    } 
+0

將您的變量移動到適當的作用域級別。你在該塊內聲明它,所以它只能存在於該塊內。 –

+0

類型'String [] myArray = null;'直接在'int operation ='下面並將調用從'String [] myArray = File.'更改爲'myArray = File.',然後您可以處理空引用異常用戶以後不會輸入1或2。這是一個「範圍」問題,在{{}內部定義的東西只能在相同的括號內進行訪問。您希望將'myArray'範圍擴展到'search(){}'括號,而不是'if(operation == x){}'括號 – Quantic

回答

1

你的if & else範圍內聲明myArray。您應該改爲外部聲明,以便它可以從任何地方在你的函數進行訪問,就像這樣:的

String[] myArray = null; 
if (operation == 1) 
{ 
    myArray = File.ReadAllLines("Data1/Day_1.txt"); 
} 
else if (operation == 2) 
{ 
    myArray = File.ReadAllLines("Data1/Months_1.txt"); 
} 

代替

if (operation == 1) 
{ 
    String[] myArray = File.ReadAllLines("Data1/Day_1.txt"); 
} 
else if (operation == 2) 
{ 
    String[] myArray = File.ReadAllLines("Data1/Months_1.txt"); 
} 

你可以閱讀更多的關於範圍在C#here

+0

感謝您的幫助。工作 – Russsu