-2

作成したアレイで最大のプラトーを見つけようとしています。なんらかの理由で、Ln 28 でハングアップし続けます。表示または修正されていないものは何ですか?

import java.util.Random;
public class MyAttemptAtPlateauProblem
{
public static void main(String[] args)
{
    Random random = new Random();
  boolean plateau = false;
  int largest = 0;
  int largest_start = 0;
  int array[] = new int[500];
  for (int a = 1; a<array.length; a++)
  {
     array[a]=random.nextInt(20)+1;
     System.out.println(array[a]);
  }
  for ( int a = 1; a < array.length - 1; a++)
     if (!plateau && array[a] == array[a+1] && array[a-1]<array[a])
        {
           plateau = true;
           int start = a-1;
        }else if (plateau && array[a]==array[a+1])
        {
        }else if (plateau && array[a]!=array[a+1])
        {
           if(array[a+1]<array[a])
           {
              int end = a+1;
              if(end- int start+1>largest || (end-start+1==largest && array[largest_start+1]<array[start+1]))
              {
                 largest=end-start+1;
                 largest_start=start;
              }
           }
           plateau=false;
        }

        System.out.println(largest_start + " : " + largest + " : ");
        for(int a=0;a<largest;a++)
        {
           System.out.println(array[largest_start+a] + " - ");
        }
   System.out.println(array);
   }            
}

ループ内で start を新しい変数として宣言しようとしましたが、何もしませんでした。そうすると、以前の値が失われると思います。

4

2 に答える 2

1

SOへようこそ。

int startif 文の外で宣言する必要があります。ただし、コードを正しく解釈すると、start の値は常に 0 になります。なぜですか?

于 2013-11-05T01:08:27.500 に答える