附加输入

时间:2018-10-06 03:31:12

标签: java kattis

我正在解决Kattis问题。我不确定如何获取第二组输入数据以进行识别和处理。有人可以提供帮助吗?

以下是详细信息:

说明:

  

输入:
输入的第一行给出了测试用例的数量。   每个测试用例有两行。第一个给出   商店,第二个给出他们在Long上的整数位置   街。

输出:
对于每个测试用例,输出一行   最佳的停车距离,步行距离最小。

示例输入和输出:

输入
2
4
24 13 89 37
6
7 30 41 14 39 42

输出:
152
70

因此,基本上,您正在将最大/最小int之差加倍。我已经获得了第一组数据(24、13、89、37)来计算152,但是我的程序忽略了第二组数据(7、30、41、14、39、42)。这是代码:

    public static void main(String[] args) {
    //create scanner for input
    Scanner in = new Scanner (System.in);

    //create variables for first two input lines
    int cases = in.nextInt();
    int numOfStores = in.nextInt();

    //initialize array
    int numArray [] = new int[numOfStores];

    //assign values to array
    for (int i = 0; i < numArray.length; i++){
        numArray[i] = in.nextInt();}

    //sort array
    Arrays.sort(numArray);

    //set min value to first index position of array
    int min = numArray[0];

    //set max value to last index position of array
    int max = numArray[numArray.length - 1];

    //print out the difference of max and min multiplied by 2 for     distance to and from
    System.out.println((max - min) * 2);

2 个答案:

答案 0 :(得分:0)

您需要循环输入案例的次数。 因此,您可以使用for循环。

int cases = in.nextInt();
for(int c = 0; c < cases; c++){
  //rest of the code
}

答案 1 :(得分:0)

您需要在上面添加一个测试用例数量的循环。另外,您需要将结果推送到列表,以便最后可以在控制台上显示它们。

        import java.util.Scanner;
        import java.util.ArrayList;
        import java.util.Arrays;

        class Kattis {

            public static void main(String[] args) {
                // Create scanner for number of test cases.
                System.out.println("Input");
                Scanner in = new Scanner(System.in);
                int numTestCases = in.nextInt();

                ArrayList<Integer> out = new ArrayList<>();

                for (int t = 0; t < numTestCases; ++t) {

                    int numOfStores = in.nextInt();

                    // initialize array
                    int numArray[] = new int[numOfStores];

                    // assign values to array
                    for (int i = 0; i < numArray.length; i++) {
                        numArray[i] = in.nextInt();
                    }

                    // sort array
                    Arrays.sort(numArray);

                    // set min value to first index position of array
                    int min = numArray[0];

                    // set max value to last index position of array
                    int max = numArray[numArray.length - 1];

                    // print out the difference of max and min multiplied by 2 for distance to and


                    out.add((max - min) * 2);
                }
                in.close();
                System.out.println("Output");
                for (Integer data : out) {
                    System.out.println(data);
                }
            }
        }