return 并且在运行时
return and while in function
此函数接受输入并告诉用户输入是数字还是非数字。
static string isnum()
{
Console.WriteLine("Write a number please");
string a = Console.ReadLine();
string nums = "123456789";
int cnt = 0;
for (int i = 0; i < a.Length; i++)
{
for (int j = 0; j < nums.Length; j++)
{
if (a[i] == nums[j])
{
cnt++;
break;
}
}
}
if (cnt == a.Length)
{
Console.WriteLine(a + " is a number");
return a;
}
else
{
Console.WriteLine(a + " is not a number");
return "";
}
}
isnum();
如果输入不是数字,我希望这个函数自己重复,直到输入为数字,然后停止。
此功能现在可用,但她只用了一次。
当我尝试向函数添加一个 while 块以使她一次又一次地 运行 直到输入为数字时,我收到“并非所有代码路径 return 一个值”错误。
是不是因为一个“return”语句结束了一个函数,从而阻止她再次运行?
我该如何解决?
非常感谢!
在这种情况下,最好的方法是使用 do while,因为您希望代码至少 运行 一次。
你的代码有一个问题,当变量不是数字时返回。查看这些修改:
static string isnum()
{
do{
Console.WriteLine("Write a number please");
string a = Console.ReadLine();
string nums = "123456789";
int cnt = 0;
for (int i = 0; i < a.Length; i++)
{
for (int j = 0; j < nums.Length; j++)
{
if (a[i] == nums[j])
{
cnt++;
break;
}
}
}
if (cnt == a.Length)
{
Console.WriteLine(a + " is a number");
return a;
}
else
{
Console.WriteLine(a + " is not a number");
}
}while(true);
}
你可以通过围绕它创建一个循环来解决这个问题,当它不是数字时不要return。
static string isnum()
{
// just loop forever.
while (true)
{
Console.WriteLine("Write a number please");
string a = Console.ReadLine();
string nums = "123456789";
int cnt = 0;
for (int i = 0; i < a.Length; i++)
{
for (int j = 0; j < nums.Length; j++)
{
if (a[i] == nums[j])
{
cnt++;
break;
}
}
}
if (cnt == a.Length)
{
Console.WriteLine(a + " is a number");
return a;
}
else
{
Console.WriteLine(a + " is not a number");
// don't return here
}
}
}
在while循环中调用,循环直到结果为数字:
string result = "";
while (result == "")
{
result = isnum();
}
Console.WriteLine("result is a number: " + result);
此函数接受输入并告诉用户输入是数字还是非数字。
static string isnum()
{
Console.WriteLine("Write a number please");
string a = Console.ReadLine();
string nums = "123456789";
int cnt = 0;
for (int i = 0; i < a.Length; i++)
{
for (int j = 0; j < nums.Length; j++)
{
if (a[i] == nums[j])
{
cnt++;
break;
}
}
}
if (cnt == a.Length)
{
Console.WriteLine(a + " is a number");
return a;
}
else
{
Console.WriteLine(a + " is not a number");
return "";
}
}
isnum();
如果输入不是数字,我希望这个函数自己重复,直到输入为数字,然后停止。 此功能现在可用,但她只用了一次。 当我尝试向函数添加一个 while 块以使她一次又一次地 运行 直到输入为数字时,我收到“并非所有代码路径 return 一个值”错误。
是不是因为一个“return”语句结束了一个函数,从而阻止她再次运行? 我该如何解决?
非常感谢!
在这种情况下,最好的方法是使用 do while,因为您希望代码至少 运行 一次。
你的代码有一个问题,当变量不是数字时返回。查看这些修改:
static string isnum()
{
do{
Console.WriteLine("Write a number please");
string a = Console.ReadLine();
string nums = "123456789";
int cnt = 0;
for (int i = 0; i < a.Length; i++)
{
for (int j = 0; j < nums.Length; j++)
{
if (a[i] == nums[j])
{
cnt++;
break;
}
}
}
if (cnt == a.Length)
{
Console.WriteLine(a + " is a number");
return a;
}
else
{
Console.WriteLine(a + " is not a number");
}
}while(true);
}
你可以通过围绕它创建一个循环来解决这个问题,当它不是数字时不要return。
static string isnum()
{
// just loop forever.
while (true)
{
Console.WriteLine("Write a number please");
string a = Console.ReadLine();
string nums = "123456789";
int cnt = 0;
for (int i = 0; i < a.Length; i++)
{
for (int j = 0; j < nums.Length; j++)
{
if (a[i] == nums[j])
{
cnt++;
break;
}
}
}
if (cnt == a.Length)
{
Console.WriteLine(a + " is a number");
return a;
}
else
{
Console.WriteLine(a + " is not a number");
// don't return here
}
}
}
在while循环中调用,循环直到结果为数字:
string result = "";
while (result == "")
{
result = isnum();
}
Console.WriteLine("result is a number: " + result);