遍历测试用例并将数据发送到Java中的函数

时间:2019-04-12 13:16:16

标签: java arraylist

想要遍历一个测试用例 输入格式输入的第一行包括测试用例的数量T。

每个测试用例的第一行包括恶棍和玩家N。

每个测试用例的第二行包括N个以空格分隔的反派力量。

每个测试用例的第三行包括N个分隔玩家的能量。

4
6
112 243 512 343 90 478 
500 789 234 400 452 150
6
10 20 50 100 500 400 
30 20 60 70 90 490 
5
10 20 30 40 50 
40 50 60 70 80
7
10 20 50 100 500 400  58
30 20 60 70 90 49 79 

在这里,我想将球员和恶棍作为单独的数组发送给函数,这是我的代码,但是当测试用例的大小大于3时,我在for循环的内部获取了超出范围的异常索引

import java.util.*;
import java.lang.*;
import java.io.*;
import java.util.Collections;
public class Main {

public static void main(String[] args) {
List < Integer > values = new ArrayList < > ();
List < Integer > temp = new ArrayList < > ();
List < Integer > villain = new ArrayList < > ();
List < Integer > player = new ArrayList < > ();


 Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
 while (scanner.hasNext()) {
 values.add(Integer.valueOf(scanner.next()));
 }

 scanner.close();


int q = 0;
for (int i = 1; i <= n; i++) {

 for (int counter = q + 1; counter <= ((values.get(q) * 2) + q); 
counter++) 
 {

  if(counter < values.size())    
  temp.add(values.get(counter));

  if (counter == ((values.get(q) * 2) + q)) {
  for (int j = 0; j < temp.size(); j++) {
  if (j < temp.size() / 2)
 villain.add(temp.get(j));
 else
   player.add(temp.get(j));
  }
 String endresult = empire(villain, player);
 System.out.println(endresult);
villain.clear();
player.clear();

}

 }
temp.clear();
 q = (2 * values.get(q)) + 1;
 }

 }
}

1 个答案:

答案 0 :(得分:0)

在主循环主体的末尾,您没有正确移动 value -定位变量 q ,它需要增加而不是赋值:

struct vect32 {
    vect32() : vect(32) {}
    vector<int> vect;
};

array<vect32, 10> sequences;

sequences[0].vect.push_back(1);