2017-08-04 86 views
0

在學校,我們的任務是創建一個方法來檢查字符串是否是迴文。我編寫了代碼,但是我不能使用簽名方法。由教授所需的簽名是:c#方法簽名:如何使用教授要求的簽名創建代碼

bool ItsPalindrom(string read); 

我的代碼:

private void buttonPalindrom_Click(object sender, EventArgs e) 
{ 
    string read = textBoxPalindrom.Text.ToLower(); 
    read = read.Replace(" ", ""); 
    int i = 0; 
    string ReverseArr = ""; 
    while (i < read.Length) 
    { 
     ReverseArr = read[i] + ReverseArr; 
     i++; 
    } 
    if (read== ReverseArr) 
    { 
     MessageBox.Show("je palindrom"); 
    } 
    else 
    { 
     MessageBox.Show("ni palindrom"); 
    } 
} 
+0

即使其答案可以幫助你在你的問題你的算法不優化 –

+1

你的教授要求你寫一個名爲IsPalindrome接收一個字符串作爲輸入的方法,並返回一個布爾值,如果在那裏這個布爾無疑是真實的輸入字符串是迴文,否則返回false。您應該開始在您的表單類中編寫此方法,並假定UI中的某個人將調用此方法。你的邏輯雖然很殘忍,但會注意到你不應該關注用戶界面元素的方法。這是作爲輸出所需的布爾原因 – Steve

回答

4

爲什麼不呢?用這個簽名定義一個方法,並在那裏移動你的邏輯。在您的事件處理程序中調用該方法

bool ItsPalindrom(string read) 
{ 
    //your palindrome logic 
} 

private void buttonPalindrom_Click(object sender, EventArgs e) 
{ 
    ItsPalindrom(textBoxPalindrom.Text.ToLower()); 
} 
2

方法「簽名」是其返回類型和參數。你不能改變的事件處理程序的簽名(如您點擊按鈕的方法),但你可以把它稱之爲另一個方法,從現有的代碼重構:

private bool IsPalindrome(string read) 
{ 
     read = read.Replace(" ", ""); 
     int i = 0; 
     string ReverseArr = ""; 
     while (i < read.Length) 
     { 
      ReverseArr = read[i] + ReverseArr; 
      i++; 
     } 
     return read == ReverseArr; 
} 

然後你只需把它叫做:

private void buttonPalindrom_Click(object sender, EventArgs e) 
{ 
    string read = textBoxPalindrom.Text.ToLower(); 
    bool palindrome = IsPalindrome(read); 
    if (palindrome) 
    { 
     MessageBox.Show("je palindrom"); 
    } 
    else 
    { 
     MessageBox.Show("ni palindrom"); 
    } 
} 
+0

感謝您的答案。你幫了我很多! –