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

本文关键字:错误 索引 检索 数组 | 更新日期: 2023-09-27 18:29:54

我有两个不同的类

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

我不能用两个回车语句吗。如何让它停止,只给出一次消息,但它只是随着循环一起显示,次数与循环一样多。

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

这可能是您想要的:

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

由于你的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); 
    }
}

正如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)