C# 数组索引和检索值生成逻辑错误

C# 数组索引和检索值生成逻辑错误,c#,C#,我有两门不同的课 class TollGate { public void Check(int []numbers, int Token) { int i; for (i = 0; i < numbers.Length; i++) { int s = numbers[i]; if ( Token > s) { Cons

我有两门不同的课

class TollGate
{
    public void Check(int []numbers, int Token)
    {
        int i;
        for (i = 0; i < numbers.Length; i++)
        {
            int s = numbers[i];
            if ( Token > s)
            {
                Console.WriteLine("You Got To Wait");
                return;//this works
            }
            else
            {
                 Console.WriteLine("Hold On Printing a Pass\n\"Happy Trip\"");//this doesn't   
                 return;
            } 
        }
    }
}


class Program
{
    public static void Main()
    {
        int[] numbers = new int[5]  {1, 2, 3, 4, 5};
        Random rnd = new Random();
        int r = rnd.Next(numbers.Length);
        int Token = (numbers[r]);
        Tollgate T = New TollGate();  
        T.Check(numbers, Token);
        Console.WriteLine("Cool"); 
        Console.WriteLine("Hot");
        Console.WriteLine("Freezing");
    }
}
等级收费站
{
公共无效检查(int[]数字,int令牌)
{
int i;
对于(i=0;is)
{
Console.WriteLine(“你必须等待”);
return;//这是有效的
}
其他的
{
Console.WriteLine(“暂停打印通行证\n\'Happy Trip\”);//这不正确
返回;
} 
}
}
}
班级计划
{
公共静态void Main()
{
int[]number=新的int[5]{1,2,3,4,5};
随机rnd=新随机();
int r=rnd.Next(数字.长度);
int标记=(数字[r]);
收费站T=新收费站();
支票(号码、代币);
控制台。WriteLine(“酷”);
控制台。写入线(“热”);
控制台。写入线(“冻结”);
}
}

我不能使用两个返回语句吗。如何让它停止,只给出一次消息,但它只是随着循环一起运行,显示的次数与循环的次数相同

这可能是您想要的:

public void Check(int[] numbers, int Token) {
   for (int i = 0; i < numbers.Length; i++) {
       if ( Token > numbers[i]) {
          Console.WriteLine("You Got To Wait");
          return;
       }
    }
}

public static void Main() {
    int[] numbers = new int[] {1, 2};
    int[] tokens = new int[] {1,2,3,4,5};
    Random rnd = new Random();
    int r = rnd.Next(tokens.Length);
    int Token = (tokens[r]);
    Tollgate T = new TollGate();  
    T.Check(numbers, Token); 
}
公共无效检查(int[]数字,int令牌){
for(int i=0;i数字[i]){
Console.WriteLine(“你必须等待”);
返回;
}
}
}
公共静态void Main(){
int[]数字=新的int[]{1,2};
int[]标记=新的int[]{1,2,3,4,5};
随机rnd=新随机();
int r=rnd.Next(tokens.Length);
int-Token=(tokens[r]);
收费站T=新收费站();
支票(号码、代币);
}

这可能是您想要的:

public void Check(int[] numbers, int Token) {
   for (int i = 0; i < numbers.Length; i++) {
       if ( Token > numbers[i]) {
          Console.WriteLine("You Got To Wait");
          return;
       }
    }
}

public static void Main() {
    int[] numbers = new int[] {1, 2};
    int[] tokens = new int[] {1,2,3,4,5};
    Random rnd = new Random();
    int r = rnd.Next(tokens.Length);
    int Token = (tokens[r]);
    Tollgate T = new TollGate();  
    T.Check(numbers, Token); 
}
公共无效检查(int[]数字,int令牌){
for(int i=0;i数字[i]){
Console.WriteLine(“你必须等待”);
返回;
}
}
}
公共静态void Main(){
int[]数字=新的int[]{1,2};
int[]标记=新的int[]{1,2,3,4,5};
随机rnd=新随机();
int r=rnd.Next(tokens.Length);
int-Token=(tokens[r]);
收费站T=新收费站();
支票(号码、代币);
}

因为for中的逻辑很难理解,所以我试着猜你想做什么

class Tollgate
{
    public void Check(int []numbers, int Token)
    {
        int i;

        //change this for to the actual logic that you need
        //for (int numbers[i] = 0; numbers[i] < numbers.Length; numbers[i]++)
        for (i = 0; i < numbers.Length; i++)
        {
            int s = numbers[i];
            if ( Token > s)
            {
                Console.WriteLine("You Got To Wait");
            }
            else
            {
                //handle else logic

                //if need to stop the loop when this condition is met, insert a "break;" (condition is Token <= s)
            }   

        }
    }
}
class That
{
    public static void Main()
    {
         int[] numbers = {1, 2, 3, 4, 5};
         Random rnd ;
         int r ;
         int Token ;
         Tollgate T ;  

         rnd = new Random();
         r = rnd.Next(numbers.Length);
         Token = numbers[r];
         T = new TollGate();  
         T.Check(numbers, Token); 
    }
}
等级收费站
{
公共无效检查(int[]数字,int令牌)
{
int i;
//将此更改为所需的实际逻辑
//for(整数[i]=0;数字[i]s)
{
Console.WriteLine(“你必须等待”);
}
其他的
{
//处理其他逻辑

//如果需要在满足此条件时停止循环,请插入一个“break;”(条件是Token),因为for中的逻辑很难理解,我试图猜测您要做什么

class Tollgate
{
    public void Check(int []numbers, int Token)
    {
        int i;

        //change this for to the actual logic that you need
        //for (int numbers[i] = 0; numbers[i] < numbers.Length; numbers[i]++)
        for (i = 0; i < numbers.Length; i++)
        {
            int s = numbers[i];
            if ( Token > s)
            {
                Console.WriteLine("You Got To Wait");
            }
            else
            {
                //handle else logic

                //if need to stop the loop when this condition is met, insert a "break;" (condition is Token <= s)
            }   

        }
    }
}
class That
{
    public static void Main()
    {
         int[] numbers = {1, 2, 3, 4, 5};
         Random rnd ;
         int r ;
         int Token ;
         Tollgate T ;  

         rnd = new Random();
         r = rnd.Next(numbers.Length);
         Token = numbers[r];
         T = new TollGate();  
         T.Check(numbers, Token); 
    }
}
等级收费站
{
公共无效检查(int[]数字,int令牌)
{
int i;
//将此更改为所需的实际逻辑
//for(整数[i]=0;数字[i]s)
{
Console.WriteLine(“你必须等待”);
}
其他的
{
//处理其他逻辑

//如果需要在满足此条件时停止循环,请插入“中断”(条件是Token,正如King King提到的,您可以向循环中添加一个
return
语句,以在该点停止函数。如果您想退出循环但不退出函数,请添加一个
continue
语句,而不是
return
。这将跳出循环,在实际代码中非常有用,即使您的示例e很简单,不需要它

   bool waiting = false;
   if ( Token > numbers[i]) {
      Console.WriteLine("You Got To Wait");
      waiting = true;
      break;
   }
   ... // add any additional logic here. can check if(waiting)

正如King King提到的,您可以向循环中添加一个
return
语句,以在该点停止函数。如果您想退出循环但不退出函数,请添加一个
continue
语句,而不是
return
。这会跳出循环,在实际代码中非常有用,即使示例代码足够简单我不需要它

   bool waiting = false;
   if ( Token > numbers[i]) {
      Console.WriteLine("You Got To Wait");
      waiting = true;
      break;
   }
   ... // add any additional logic here. can check if(waiting)

你是否将5个整数放入一个只有2个空间的数组中?只需使用
if(Token>numbers.Max())控制台。WriteLine(“你必须等待”);
@Adam Liss更正了它。你是否将5个整数放入一个只有2个空间的数组中?只需使用
if(Token>numbers.Max())控制台。WriteLine(“你必须等待”);
@Adam Liss更正了它。