“比如用户从控制台输入35,则控制台输出“35以内能被5整除的数的和为140”。程序中实现如果用户的输入非法就重新输入。”
如何实现非法输入就不停循环进行重新输入?
int num;
Console.WriteLine("请输入一个整数:");
while (!int.TryParse(Console.ReadLine(), out num))
{
Console.WriteLine("输入有误,请重新输入");
}
int sum = 0;
for (int i = 1; i <= num; i++)
{
if (i % 5 == 0)
sum += i;
}
Console.WriteLine($"{num} 以内能被5整数的数的和为{sum}!");
Console.ReadKey();
function luru(num){
while( !checkfun(num) ) {
//执行重新输入
luru(num);
}
return num;
}
checkfun 检查数据是否合法,合法就返回true,不合法返回false
意思是需要输入的内容为int类型吗?可以考虑用try catch,在try里面将输入内容转为int,转换失败就进catch提示重新输入
【若能帮到您,望给个采纳该答案,谢谢】
1、效果如下
2、代码如下
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace integer
{
class Program
{
static void Main(string[] args)
{
/*
Console.Read(),读取一个整数,值为ascii码
Console.ReadLine(),读取字符串
*/
int num = 0;
int total = 0;
Console.WriteLine("请输入一个能被5整除的数:");
string num_str = Console.ReadLine();
bool flag = false;
while (!flag) //设置一个无线循环,满足条件会一直循环方法体
{
if (int.TryParse(num_str, out num))
{
for(int i = 0; i < num; i++)
{
int new_num = (num - i);
if (new_num % 5 == 0) //遍历输入值以内的数能被5整除的数之和
{
total += new_num;
}
}
flag = true; //关键:跳出循环
}
else
{
Console.WriteLine("您输入的值非法,请重新输入");
num_str = Console.ReadLine();
}
}
Console.WriteLine("{0}以内能被5整数的数之和为:{1}", num, total);
Console.ReadKey();
}
}
}