我正在努力寻找我创建的阵列中最大的高原。由于某种原因,我继续挂在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声明为循环中的一个新变量,但这没有做任何事情,我认为这样做会失去以前的值。
答案 0 :(得分:1)
if(end-int start + 1&gt; maximum ||(end-start + 1 == maximum&amp;&amp;) 阵列[largest_start + 1]
因为你不能像这样使用关键字'int'。请多读一读。
答案 1 :(得分:1)
欢迎来到SO。
您需要在if语句之外声明int start
。但是,如果我正确解释您的代码,start将始终具有值0,为什么会这样?