我的案例1-3工作,但我不能工作4-7或不知道如何键入或接近它。
正如你在第4号中所看到的那样我编程所以当我运行程序并按4时它应该运行案例4倒数到10但是跳过7为什么不能工作?也无法弄清楚如何做5-7。
我还没有学到很多,如果可以帮助我,并解释你的代码如何为我解决这个问题,那将是非常合适的。
namespace WhileLoopExercises
{
class Program
{
static void Main(string[] args)
{
int selection = 0;
while (selection != 9)
{
Console.Clear();
Console.WriteLine("\n\n Menu:\n");
Console.WriteLine("\t 1. Display 10 stars( one per line)");
Console.WriteLine("\t 2. Request a value 1 to 50 from user, then display");
Console.WriteLine("\t 3. Display 10 rows of 3 stars");
Console.WriteLine("\t 4. Add all values between 1 to 10 except 7");
Console.WriteLine("\t 5. Display all the even numbers between 10 and 100");
Console.WriteLine("\t 6. Add all the odd numbers bewteen 10 and 100");
Console.WriteLine("\t 7. Generate 6 random numbers ranging from 1 to 49");
Console.WriteLine("\t 8. Exit Apllication");
Console.Write("Enter your selection: ");
selection = int.Parse(Console.ReadLine());
switch (selection)
{
case 1:
{
int counter = 1;
while (counter <= 10)
{
Console.WriteLine("*");
counter++;
}
}
break;
case 2:
{
Console.Write("Enter integer 0-50 : ");
int N = int.Parse(Console.ReadLine());
int counter = 1;
while (counter <= N)
{
Console.Write("*");
counter++;
}
}
break;
case 3:
{
int counter = 1;
while (counter <= 10)
{
Console.WriteLine("***");
counter++;
}
}
break;
case 4:
{
int counter = 1;
while (counter <= 10)
{
if (counter == 7)
{
counter++;
}
}
}
break;
case 5:
{
int counter = 1;
while (counter <= 100)
{
}
}
break;
case 6:
{
}
break;
case 7:
{
}
break;
}// end of switch
//pause
Console.WriteLine("\n\nHit any key to coutinue");
Console.ReadKey();
}
}
}
}
答案 0 :(得分:7)
我们不能为你做堆栈溢出的功课。但是,我们可以指出您的逻辑问题。
查看案例四,我们看到了
case 4:
{
int counter = 1;
while (counter <= 10)
{
if (counter == 7)
{
counter++;
}
}
}
现在解决问题。我们从1的计数器开始,当它小于或等于10时,我们输入你的if语句。
你的if语句说“如果我的计数器等于7,那么将计数器增加(增加)一。”但是,您的计数器输入1,并且没有其他逻辑定义计数器的行为,因此没有任何反应!这个循环然后永远继续(哎呀!)。考虑到这一点,再试一次。
答案 1 :(得分:4)
以下是对第4号的一些建议,而不仅仅是编写解决方案:
您的计数器从1开始,循环在counter <= 10
时继续,但您只在counter == 7
时递增。这看起来像是个问题吗?
你在counter == 7
时正在做某事,但实际上“7”是你不想要做任何事情的唯一时间。
您需要创建另一个变量来存储“总和”,然后将每个值添加到其中。
答案 2 :(得分:2)
Linq让您以更紧凑和可读的方式表达代码。
case 4:
Console.Write (Enumerable.Range(1,100).Where(v => v != 42).Sum());
如果您需要更多基本代码,请考虑使用for
而不是while
,因为它表示以更惯用的方式迭代范围(并且continue
可能是您希望用于4到跳过数字):
case 4:
{
var sum = 0;
for(var i = 1; i <= 20; i++)
{
if (i != 3)
continue;
sum += 0;
}
break;
}
答案 3 :(得分:2)
案例4不能正常工作,因为它只会在counter
为7时递增。所以它无限地保持为1.这应该有效(没有开头的行号 - 它们是一个部分下文):
1 int counter = 1;
2 int sum = 0; // Need to maintain sum
3 while (counter <= 10) { // Do all numbers 1 thru 10
4 if (counter != 7) // Skip 7
5 sum += counter;
6 counter++;
7 }
8 Console.Write (sum);
可以对所有其他情况采取类似的方法。您所要做的就是弄清楚它的确切要求并将其映射到代码。尝试一下它是否有效,如果没有,可以通过头脑运行代码来查看它出错的地方。在学习过程中,能够模拟脑中的计算机是一项宝贵的学习技巧。
用铅笔和纸坐下来并依次运行每一行(行号与上面代码中的行号相匹配)通常是有利的:
line | counter | sum | comment
-----+---------+-----+--------
1 | 1 | ? |
2 | | 0 |
3 | | | 1 <= 10, will enter 'while'
4 | | | 1 != 7, will enter 'if'
5 | | 1 |
6 | 2 | |
7 | | | return to while loop start
3 | | | 2 <= 10, will enter 'while'
:
等等。
将需求映射到代码的另一个例子来自案例6:Add all the odd numbers between 10 and 100
。这可以通过以下方式实现:
11
。100
。这将导致以下伪代码:
set sum to 0
set num to 11
while num is less than or equal to 100:
add num to sum
add 2 to num
output sum
我会把它转换成真正的语言,作为读者的练习。