Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C语言中的返回问题#_C#_Winforms_Algorithm - Fatal编程技术网

C# C语言中的返回问题#

C# C语言中的返回问题#,c#,winforms,algorithm,C#,Winforms,Algorithm,由于询问my,我已将代码更改为使用return。我对return总是有这样的问题:我知道我应该使用return(我在下面的代码中对此进行了注释),但我不知道应该如何定义它来工作?谢谢你的帮助 public double bigzarb(int u, int v) { double n; int x=0; int y; int w=0; int z; string[] i = textBox7.Text.Split(','); int[] n

由于询问my,我已将代码更改为使用
return
。我对return总是有这样的问题:我知道我应该使用return(我在下面的代码中对此进行了注释),但我不知道应该如何定义它来工作?谢谢你的帮助

public double bigzarb(int u, int v)
{
    double n;
    int x=0;
    int y;
    int w=0;
    int z;
    string[] i = textBox7.Text.Split(',');
    int[] nums = new int[i.Length];
    for (int counter = 0; counter < i.Length; counter++)
    {
        nums[counter] = Convert.ToInt32(i[counter]);
    }

    u = nums[0];
    double firstdigits =Math.Floor(Math.Log10(u) + 1);
    v = nums[1];
    double seconddigits = Math.Floor(Math.Log10(v) + 1);
    if (firstdigits >= seconddigits)
    {
        n = firstdigits;
    }
    else
    {
        n = seconddigits;
    }
    if (u == 0 || v == 0)
    {
        MessageBox.Show("the Multiply is 0");
    }
    string threshold = textBox9.Text;
    int intthreshold = Convert.ToInt32(threshold);
    int intn = Convert.ToInt32(n);
    if (intn <= intthreshold)
    {
        double uv = u * v;
        string struv = uv.ToString();
        MessageBox.Show(struv);
        ///i know here should be a return but i dont know how to define it to work
    }
    else
    {
        int m = Convert.ToInt32(Math.Floor(n / 2));

        x = u % 10 ^ m;
        y = u / 10 ^ m;
        w = v % 10 ^ m;
        z = v / 10 ^ m;

        return  bigzarb(x, w) *Math.Pow(10,m) +(bigzarb(x,w)+bigzarb(w,y))*Math.Pow(10,m) +bigzarb(y,z);
    }
}
public-double-bigzarb(intu,intv)
{
双n;
int x=0;
int-y;
int w=0;
intz;
字符串[]i=textBox7.Text.Split(',');
int[]nums=新的int[i.Length];
用于(int计数器=0;计数器=第二位数)
{
n=第一位数字;
}
其他的
{
n=第二位数;
}
如果(u==0 | | v==0)
{
MessageBox.Show(“乘法为0”);
}
字符串阈值=textBox9.Text;
int intthreshold=Convert.ToInt32(阈值);
int intn=转换为32(n);

如果(intn如果您的方法被定义为“returnvoid”,则不能返回某些值。 因此,将“void”更改为“int”或“double”,无论您想要返回什么类型的值

下一个问题是,您希望在该点返回什么值?返回该值


顺便说一下:如果你真的不想返回值(永远!),那么“void”是正确的,你应该只使用没有值的“return”(或者让方法运行到方法的最后一行)。

如果你的方法被定义为“return void”,你就不能返回一些值。 因此,将“void”更改为“int”或“double”,无论您想要返回什么类型的值

下一个问题是,您希望在该点返回什么值?返回该值


顺便说一句:如果你真的不想返回一个值(永远!),那么“void”是正确的,你应该只使用没有值的“return”(或者让这个方法运行到方法的最后一行)。

arash,你的问题不在于这个返回,你的问题是
bigzarb()
被声明为void,这意味着它没有返回值,但您在最后一行中使用它作为
bigzarb(x,w)*..
,这将给您带来一个错误。此外,由于您将bigzarb()声明为void,您无法返回其中的值。此外,^并不意味着in.net的幂,您应该使用
Math.power

编辑:您应该将方法从
void bigzarb()
更改为
double bigzarb()
,并用Math.Power替换^

上次编辑:将方法返回类型从int更改为double,并将最后一行更改为:

return bigzarb(x, w) * Math.Pow(Convert.ToDouble(10), Convert.ToDouble(m)) + (bigzarb(x, w) + bigzarb(w, y)) * Math.Pow(Convert.ToDouble(10), Convert.ToDouble(m)) + bigzarb(y, z);

arash,你的问题不在于返回,你的问题是
bigzarb()
被声明为void,这意味着它没有返回值,但你在最后一行中使用它作为
bigzarb(x,w)*..
会给你一个错误。另外,因为你声明了bigzarb()作为void,您不能在其中返回值。另外,^并不意味着.net中的power,您应该使用
Math.power

编辑:您应该将方法从
void bigzarb()
更改为
double bigzarb()
,并用Math.Power替换^

上次编辑:将方法返回类型从int更改为double,并将最后一行更改为:

return bigzarb(x, w) * Math.Pow(Convert.ToDouble(10), Convert.ToDouble(m)) + (bigzarb(x, w) + bigzarb(w, y)) * Math.Pow(Convert.ToDouble(10), Convert.ToDouble(m)) + bigzarb(y, z);
public int-bigzarb(int-u,int-v)
{
双n;
int x=0;
int-y;
int w=0;
intz;
字符串[]i=textBox1.Text.Split(',');
int[]nums=新的int[i.Length];
用于(int计数器=0;计数器=第二位数)
{
n=第一位数字;
}
其他的
{
n=第二位数;
}
如果(u==0 | | v==0)
{
MessageBox.Show(“乘法为0”);
}
//字符串阈值=textBox9.Text;
int intthreshold=Convert.ToInt32(textBox9.Text);//由我编辑
int intn=转换为32(n);
if(intn
public int bigzarb(intu,intv)
{
双n;
int x=0;
int-y;
int w=0;
intz;
字符串[]i=textBox1.Text.Split(',');
int[]nums=新的int[i.Length];
用于(int计数器=0;计数器=第二位数)
{
n=第一位数字;
}
其他的
{
n=第二位数;
}
如果(u==0 | | v==0)
{
MessageBox.Show(“乘法为0”);
}
//字符串阈值=textBox9.Text;
int intthreshold=Convert.ToInt32(textBox9.Text);//由我编辑
int intn=转换为32(n);

if(intn这是一个令人困惑的问题。因为您的函数包含Void作为返回类型

这是一个令人困惑的问题。因为您的函数包含Void作为返回类型

声明用于返回值的整数变量 例:


}声明用于返回值的整数变量 例:


}

我给你的建议是构造你的代码,提取一些代码,用有意义的名称分隔函数,并将你的变量重命名为有意义的。这将使你更容易阅读、理解,并获得更好的“流”在你的代码中。另外,你应该用一个实际的问题来补充你的文本。试着在if代码块中插入一个额外的return语句,有多个return语句是非常好的

if(logic check)
{
     return something;
}
else
{
     return something else;
}
你需要
if(logic check)
{
     return something;
}
else
{
     return something else;
}