前哨控制while循环C#

flimflam57

因此,我有一个简单的控制台程序可以读取考试成绩并打印出平均成绩和成绩。到目前为止,它是以下内容:

public static void Main ()
    {
        int sum = 0;
        int count = 0;
        double average = 0;

        Console.WriteLine ("Enter all your exam scores one by one. When finished, enter -99");

        string scores = Console.ReadLine ();

        while (scores != "-99") {
            sum += int.Parse (scores);
            count++;
            scores = Console.ReadLine ();

        } 
        if (scores == "-99") {
            average = sum / count;
            if (average >= 90)
                Console.WriteLine ("Your average score is {0}. This is good for a letter grade of A", average);
                Console.WriteLine(....more scores etc...);

现在,我想使用TryParse检查无效条目。我以为我会先在另一个while循环中加入另一个循环,然后像这样更改原始的循环:

 Console.WriteLine ("Enter all your exam scores one by one. When finished, enter -99");

        string scores = Console.ReadLine ();

          while (int.TryParse(scores, out numbers) == false){
               Console.WriteLine("Please enter a valid integer")
               scores = Console.ReadLine();
               sum += int.Parse(scores);
               count++;

        } 
          while (scores != "-99" && int.TryParse(scores, out numbers) == true) {
            sum += int.Parse (scores);
            count++;
            scores = Console.ReadLine ();

        } 
          if (scores == "-99") {
            average = sum / count;
            if (average >= 90)
                Console.WriteLine ("Your average score is {0}. This is good for a letter grade of A", average); ...etc...

这里的问题是,如果用户首先输入有效条目,然后输入无效条目,则编译器将无法返回到第一个while循环来检查无效条目。所以我试图交换while循环的位置。但这具有相同的效果。输入无效的条目后,它不能返回到第一个while循环来检查有效的条目。答案很可能很简单,但我被困住了。

詹妮·朗格

您遇到的问题是,你从第一循环时打破TryParse的回报true,但没有求助于重新进入循环。相反,您应该嵌套循环。带有前哨的循环应该是外部循环,验证并提示用户的循环应该是内部循环。这是一个例子:

while(scores != "-99")
{
    scores = Console.ReadLine();

     while((int.TryParse(scores, out numbers) == false)
     {
        //validation failed, re-prompt user for better number
        Console.WriteLine("Bad value, try again")
        scores = Console.ReadLine()
     }

     //do stuff here with the valid score value
  }  

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C中的while循环-读取前哨变量

来自分类Dev

基本的while循环C#

来自分类Dev

While和前哨值

来自分类Dev

C#控制台应用程序执行while循环

来自分类Dev

无限while循环和控制-c

来自分类Dev

Java 循环控制(while)

来自分类Dev

C#中的While循环问题

来自分类Dev

while循环中的布尔语句C#

来自分类Dev

MessageBox和while循环C#

来自分类Dev

C#中的While循环问题

来自分类Dev

C# while 循环不起作用

来自分类Dev

C# - 关于 while 循环的程序

来自分类Dev

添加while循环以继续或退出C ++中的控制台

来自分类Dev

如何创建循环直到输入前哨?

来自分类Dev

Bash使用while循环控制进行for循环

来自分类Dev

在C#中使用while循环搜索数组?

来自分类Dev

在C#中使用多个条件的while循环

来自分类Dev

在C#中使用While循环和阶乘

来自分类Dev

停止不在while循环中的C#线程

来自分类Dev

如何实现while循环到selenium test c#

来自分类Dev

While / For循环不会循环。(C ++)

来自分类Dev

使用互斥锁控制while循环的时序

来自分类Dev

C中的While循环

来自分类Dev

C跳过“ while”循环?

来自分类Dev

打破While循环C ++

来自分类Dev

简单的C ++ while循环

来自分类Dev

c#类,结构或接口成员声明中的无效令牌“ while”(while循环不起作用)

来自分类Dev

在 while 部分变为 false C# 后,Do-while 循环不会停止

来自分类Dev

循环和一半VS重复直到前哨成语