我有一个输入代码:
vgxgp
3
2 4
2 5
7 14
预期输出:Yes No Yes
第一个输入行包含string S
,即她要求的项目的名称。
第二行包含一个integer Q
,即对她说“是”或“否”的整数对数。
这些对按顺序给出,在Q行之后,每个包含2个整数a和b。 (基于1的索引)我在if(line[a]==line[b])
收到错误ArrayIndex out of bound
。
import java.io.BufferedReader;
import java.io.InputStreamReader;
class Test {
public static void main(String args[] ) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] line = br.readLine().split(" ");
int t =Integer.parseInt(br.readLine());
int[][] ar = new int[t][2];
int k=0;
for (int j = 0; j < t; j++) {
String[] input1=br.readLine().split(" ");
for (int i = 0; i < 2; i++) {
ar[k][i]=Integer.parseInt(input1[i]);
}
k=k+1;
}
k=0;
for (int i = 0; i < t-1; i++) {
System.out.println(line[i]);
System.out.println(ar[k][0]);
System.out.println(ar[k][1]);
int a=ar[k][0];
int b=ar[k][1];
System.out.println("hello"+line[i]);
if(line[a]==line[b]) {
System.out.println("Yes");
} else {
System.out.println("No");
k = k + 1;
}
}
}
}
答案 0 :(得分:2)
正如Niels Billen的回答所示,您的代码使用了数组line
的错误索引位置,因为此数组的长度正好是1
,因此要使用的索引位置为0
。使用>的索引位置; 0
(给定a = 2
和b = 4
)生成ArrayIndexOutOfBoundsException
。
我在可读性方面简化了代码,但由于缺乏明确的问题描述,我刚刚添加了一个“好猜测”,可以产生您想要的输出(是否是)。
public class Test {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] line = br.readLine().split(" ");
int numberOfDataPairs = Integer.parseInt(br.readLine());
int[][] dataPairs = new int[numberOfDataPairs][2];
// read in the data pairs here
for (int j = 0; j < numberOfDataPairs; j++) {
String[] input1 = br.readLine().split(" ");
for (int i = 0; i < 2; i++) {
dataPairs[j][i] = Integer.parseInt(input1[i]);
}
}
System.out.println(line[0]);
// compare the data now
for (int i = 0; i < numberOfDataPairs; i++) {
int a = dataPairs[i][0];
int b = dataPairs[i][1];
// produces your desired output... via a modulo (%) operator
// but it's a guess - as description of the problem is unclear!
if ((b % a) == 0) {
System.out.println("Yes");
} else
System.out.println("No");
}
}
}
答案 1 :(得分:1)
您的数组line
只有一个元素vgxgp
..这就是您收到错误的原因。在最后一个循环中,您尝试访问line[a]==line[b]
,a = 2
,b=4
。这些元素不存在,将抛出ArrayIndexOutOfBoundsException