【问题标题】:c# Fibonacci calculator issuec#斐波那契计算器问题
【发布时间】:2017-11-18 04:39:21
【问题描述】:

我正在尝试获得一个有效的斐波那契计算器,但我遇到了一些问题。据我所知,我的代码运行良好,尽管当我输入一个单词时它会崩溃。我不确定如何让它为我工作,所以它只接受数字。在此先感谢:D

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;
    }

【问题讨论】:

  • double.Parse(FibonacciAsText.Text) 无法解析单词
  • double y = double.Parse(FibonacciAsText.Text); 是问题所在。在这里也使用 tryparse。
  • @ChetanRanpariya 当我这样做时,我收到以下错误“方法 'Tryparse' 没有重载需要 1 个参数”
  • 查看 Cory 的回答。如果这不起作用,请告诉我们。

标签: c# fibonacci fix-protocol


【解决方案1】:

这将退出方法并且不允许代码完成:

double y;

if (!double.TryParse(FibonacciAsText.Text, out y))
{
    Fibonacci.Text = "N/A";
    return;
}

基本上,它会检查您是否有一个有效的号码。如果是这样,它将设置为 y(类似于 Parse)。如果没有成功,它会在“return”时退出该方法。

【讨论】:

  • 虽然现在如果我在过去的数字后面输入一个单词,它仍然会输出过去的数字
  • 嗯,这取决于您的代码如何读取。我看不到更新的代码。只要“单词”在 FibonacciAsText 文本框中,它就不应该
  • private void Button_Click1(object sender, RoutedEventArgs e) { //Fibonacci string output = String.Empty; double result; double z = 0; double x = 1; double y; if (!double.TryParse(FibonacciAsText.Text, out y)) return; if (y == 1) output = 1.ToString();
  • imgur.com/RZMFUHU 我输入了 9 它给了我输出尝试过的鱼,它仍然显示过去的输出
  • 啊,那是因为你没有清除过去的输出。 “返回”后它什么也没做。包括清除该文本框。如果要清除输出,则需要明确告诉它。查看我的更新。
【解决方案2】:

您需要先验证输入。如果您使用的是文本框..应该有一个只接受数字的设置。
或者
在后端..您可以使用下面的代码检查输入是否为数字

int n;
bool isNumeric = int.TryParse(FibonacciAsText.Text, out n);

if(isNumeric)
{
Your calculator code
}

【讨论】:

    猜你喜欢
    • 2013-03-31
    • 2012-12-03
    • 1970-01-01
    • 2020-01-18
    • 1970-01-01
    • 1970-01-01
    • 2017-07-22
    • 1970-01-01
    • 2010-11-24
    相关资源
    最近更新 更多