0

私は2つの異なるクラスを持っています

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

2 つの return ステートメントを使用できませんか? メッセージを1回だけ与えることで停止させる方法ですが、ループと同じ回数だけメッセージを表示するループに沿って進みます。

4

3 に答える 3

1

あなたの 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); 
    }
}
于 2013-09-03T02:32:04.877 に答える
0

キングキングが述べたよう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)
于 2013-09-03T05:57:50.723 に答える