c#斐波那契计算器问题
我试图得到一个工作斐波那契计算器,但我有一些问题。据我所知,我的代码运行良好,尽管当我输入一个单词时它崩溃了。我不确定如何才能让它为我工作,所以它只接受数字。提前感谢:Dc#斐波那契计算器问题,c#,fibonacci,fix-protocol,C#,Fibonacci,Fix Protocol,我试图得到一个工作斐波那契计算器,但我有一些问题。据我所知,我的代码运行良好,尽管当我输入一个单词时它崩溃了。我不确定如何才能让它为我工作,所以它只接受数字。提前感谢:D public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } private void Button_Click1(object sender, Routed
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Button_Click1(object sender, RoutedEventArgs e)
{
//Fibonacci
string output = String.Empty;
double result;
double z = 0;
double x = 1;
double y = double.Parse(FibonacciAsText.Text);
if (double.TryParse(FibonacciAsText.Text, out result))
{
if (y == 1)
output = 1.ToString();
}
else if (y == 0)
{
output = 0.ToString();
}
for (double w = 0; w < y - 1; w++)
{
result = z;
z = x;
x = result + x;
output = x.ToString();
}
Fibonacci.Text = output;
}
公共部分类主窗口:窗口
{
公共主窗口()
{
初始化组件();
}
私有无效按钮\u单击1(对象发送者,路由目标)
{
//斐波那契
字符串输出=string.Empty;
双重结果;
双z=0;
双x=1;
double y=double.Parse(FibonacciAsText.Text);
if(double.TryParse(FibonacciAsText.Text,out结果))
{
如果(y==1)
输出=1.ToString();
}
如果(y==0),则为else
{
输出=0.ToString();
}
对于(双w=0;w
这将退出方法,不允许代码完成:
double y;
if (!double.TryParse(FibonacciAsText.Text, out y))
{
Fibonacci.Text = "N/A";
return;
}
基本上,它是检查您是否有一个有效的数字。如果是,它会将其设置为y(类似于解析)。但是,如果没有成功,它会在“return”处退出该方法。您需要首先验证输入。如果您使用的是文本框..应该有一个只接受数字的设置。
或
在后端..您可以使用下面的代码检查输入是否为数字
int n;
bool isNumeric = int.TryParse(FibonacciAsText.Text, out n);
if(isNumeric)
{
Your calculator code
}
double.Parse(FibonacciAsText.Text)
无法解析worddouble y=double.Parse(FibonacciAsText.Text);
是问题所在。在这里也使用tryparse。@ChetanRanpariya当我这样做时,我会得到以下错误“方法'tryparse'不重载1个参数”请看Cory的答案。如果这不起作用,请告诉我们。请看wpf:或winforms:尽管现在如果我在过去的数字后输入一个单词,它仍然会输出过去的数字,这取决于您的代码的读取方式。我看不到更新的代码。它不应该像“单词”一样长位于FibonacciAsText文本框私有无效按钮\u Click1(对象发送方,路由目标e){//Fibonacci字符串输出=string.Empty;双结果;双z=0;双x=1;双y;如果(!double.TryParse(FibonacciAsText.Text,out y))return;如果(y==1)output=1.ToString();
我输入了9,它给了我尝试过的fish输出,它仍然显示过去的输出,这是因为您没有清除过去的输出。在“return”之后它没有做任何事情。包括清除文本框。如果你想清除输出,你需要明确告诉它。请参阅我的更新。