我得到运行时错误 - NZEC我的代码如下所示。我无法理解为什么。任何人都可以帮我解决这个问题。
问题陈述:城市中存在各种信号塔。拖拉机以直线水平线(从左到右)排列,每个塔在左右方向上传输信号.Tower如果A座塔位于B座左侧且A座塔高于B座,则A应阻挡B座的信号。因此,给定塔的信号范围可定义为:
{(给定塔左侧的连续塔的数量,其高度小于或等于给定塔的高度)+ 1}。
你需要找到每个塔的范围。
INPUT
第一行包含一个整数T,指定测试用例的数量。
第二行包含一个整数n,用于指定塔的数量。
第三行包含n个空格分隔的整数(H [i]),表示每个塔的高度。
输出
打印每个塔的范围(以空格分隔)。
约束
1 <= T <= 10
2&lt; = n&lt; = 10 ^ 6
1&lt; = H [i]&lt; = 10 ^ 8
我的代码
import java.util.*;
import java.io.*;
class TestClass {
public static void main(String args[] ) throws Exception {
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
int t=Integer.parseInt(br.readLine());
Scanner sc = new Scanner(System.in);
while(t!=0)
{
int n=Integer.parseInt(br.readLine());
int arr[]=new int[n-1];
int atest[]=new int[n-1];
for (int i=0;i<n;i++)
{
arr[i]=sc.nextInt();
}
for(int j=n-1;j>=0;j--)
{
int count=0;
int temp=j-1;
while(arr[j]>=arr[temp])
{
count++;
temp--;
}
atest[j]=count;
}
for(int k=0;k<n;k++)
{
System.out.println(atest[k]+1);
}
t--;
}
}
}
答案 0 :(得分:0)
int arr[]=new int[n-1];
int atest[]=new int[n-1];
for (int i=0;i<n;i++)
{
arr[i]=sc.nextInt();
}
因为数组长度是n-1(arr.length = n-1)
这就是你得到ArrayIndexOutOfBoundsException的原因。