gpt4 book ai didi

java - 在线程 "main"java.lang.ArrayIndexOutOfBoundsException : 2 中获取异常

转载 作者:行者123 更新时间:2023-12-01 22:30:07 25 4
gpt4 key购买 nike

我有一个输入的代码:

vgxgp
3
2 4
2 5
7 14

预期输出:Yes No Yes

第一个输入行包含 string S ,她要求的商品名称。

第二行包含 integer Q ,曾经对她说"is"或“否”的整数对的数量。

这些对按顺序给出,在 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;
}
}
}
}

最佳答案

正如 Niels Billen 的回答所示,您的代码对数组 line 使用了错误的索引位置,因为该数组的长度恰好是 1 ,因此要使用的索引位置0。使用 > 0 的索引位置(给定 a = 2b = 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");
}
}
}

关于java - 在线程 "main"java.lang.ArrayIndexOutOfBoundsException : 2 中获取异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27981645/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com