2017-08-04 38 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

感谢您的答案。你帮了我很多! –