C# C语言中的返回问题#
由于询问my,我已将代码更改为使用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
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(intnpublic 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;
}