2013-12-10 13 views
0
while(Number_Of_Fruits > 0 & null <11); 

{ 
    Console.WriteLine("Please Insert a Number Between 1 and 10"); 
    Number_Of_Fruits = Convert.ToInt32(Console.ReadLine()); 
} 
/*Rest Of Code*/ 

我需要做的是确保只测试出来是有效的,只有当数量超过0且小于谭11.出于某种原因,我得到奇怪的结果,当我在3级或3级以上的测试中遇到失败时。使用的和功能在C#中while循环测试

感谢提前:)

+0

应该使用逻辑和('&&')。另外,'null <11'是无效的语法..不确定哪里有'null'来自那里。 – user2864740

+0

因此And应该在括号 – user3063971

+0

@ user2864740中使用'&'与'&&'在逻辑上没有区别。 –

回答

1

尝试改变的来自下面一行代码...

while(Number_Of_Fruits > 0 & null <11); 

while(Number_Of_Fruits > 0 && Number_Of_Fruits < 11); 

祝您好运!

1

您应该使用& &而不是&和Number_Of_Fruits而不是null。
while(Number_Of_Fruits> 0 & & Number_Of_Fruits < 11);

 { 
      Console.WriteLine("Please Insert a Number Between 1 and 10"); 
      Number_Of_Fruits = Convert.ToInt32(Console.ReadLine()); 
     } 
+0

哦,我明白了,我没有写出Number_of_Fruits <11我刚刚写了<11 – user3063971

1

条件状态数超过0且小于11晒得,所以我不知道为什么你比较11null那里......

while(Number_Of_Fruits > 0 && Number_Of_Fruits < 11) 
1

问题1:您不应该使用semicolon ;关闭while循环。如果你关闭它,它将不会进入循环,但你应该在do-while循环中使用它。
问题2:您应该使用双和号&&进行逻辑与操作。
问题3:您不应该比较nullinteger

解决方案1:

while(Number_Of_Fruits > 0 && Number_Of_Fruits <11) 
    { 
     Console.WriteLine("Please Insert a Number Between 1 and 11"); 
     Number_Of_Fruits = Convert.ToInt32(Console.ReadLine()); 
    } 

解决方案2:我觉得do-while循环适合最好的给你。

 int Number_Of_Fruits = 0; 
     do 
     { 
      Console.WriteLine("Please Insert a Number Between 1 and 11"); 
      Number_Of_Fruits = Convert.ToInt32(Console.ReadLine()); 

      if(Number_Of_Fruits > 0 && Number_Of_Fruits < 11) 
      { 
      //do whatever you want 
      } 

     } while (Number_Of_Fruits > 0 && Number_Of_Fruits < 11) ; 

解决方案3:,如果你要处理的更好的方式,用户输入您可以使用Int32.TryParse()代替Convert.ToInt32()

 int Number_Of_Fruits = 0; 
     do 
     { 
      Console.WriteLine("Please Insert a Number Between 1 and 11"); 
      if (Int32.TryParse(Console.ReadLine(), NumberStyles.None, CultureInfo.InvariantCulture, out Number_Of_Fruits)) 
      { 
      if(Number_Of_Fruits > 0 && Number_Of_Fruits < 11) 
      { 
      //do whatever you want 
      } 
      } 
      else 
      { 
      Console.WriteLine("User Input is Invalid (not a number) -> Terminating"); 
      } 


     } while (Number_Of_Fruits > 0 && Number_Of_Fruits < 11) ; 
+0

+1用于指出分号(明确地) - 这会导致一个不同的帖子瞬间! – user2864740

+0

我试图做一个,但现在它做逻辑错误... 1和10之间没有数字作品 – user3063971

+0

@ user3063971:没有它完美的作品,请再次检查它。 –

0
while(Number_Of_Fruits > 0 && Number_Of_Fruits <11) 
    { 
     Console.WriteLine("Please Insert a Number Between 1 and 10"); 
     Number_Of_Fruits = Convert.ToInt32(Console.ReadLine()); 
    } 
    /*Rest Of Code*/ 

访问[链接] http://msdn.microsoft.com/en-us/library/6a71f45d.aspx希望它可以帮助你。这是一个很好的开始。

0

尝试TryParse!

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      int Number_Of_Fruits; 
      do 
      { 
       Console.WriteLine("Please Insert a Number Between 1 and 10"); 
      } 
      while (!int.TryParse(Console.ReadLine(), out Number_Of_Fruits) || Number_Of_Fruits < 1 || Number_Of_Fruits > 10); 
     } 
    } 
} 
+0

感谢这工作:) TryParse究竟做了什么?还有什么做呢? – user3063971