C#非法输入判断以及循环重新输入问题

“比如用户从控制台输入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();

img

function luru(num){
  while( !checkfun(num)  ) {
    //执行重新输入
    luru(num);
  }
return num;
}

checkfun 检查数据是否合法,合法就返回true,不合法返回false

意思是需要输入的内容为int类型吗?可以考虑用try catch,在try里面将输入内容转为int,转换失败就进catch提示重新输入

【若能帮到您,望给个采纳该答案,谢谢】
1、效果如下

img

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