public class PairsWithSumK
{
    public static void main(String[] args) {
        // Write your code here
        Scanner sc= new Scanner(System.in);
        int test= sc.nextInt();
        for(int i=0;i<test;i++)
        {
            int num= sc.nextInt();
            int sum= sc.nextInt();
            String a;
            a = sc.next();
            String [] array= a.split(" ");
            int count=0;
            for(int j=0;j<num;j++)
             {
                int x=0;
                x=sum-Integer.parseInt(array[j]);
                String xs =String.valueOf(x);
                if(Arrays.asList(array).contains(xs))
                {
                    int index=Arrays.asList(array).indexOf(xs);
                    array[index]=array[j]="-1";
                    count++;

                }
            }
            System.out.println(count);
        }
    }
}


我一直在尝试用Java进行控制台输入,但是代码没有采用整行然后将其转换为字符串数组的方式,而是仅采用了第一个字符。例如:输入-“ 1 2 3 4 5 6”,字符串“ a”仅取1。作为编码的新手,我对此深感困惑。

最佳答案

扫描程序的next()方法仅将字符串带入下一个定界符(默认情况下为空格)。因此,在您的情况下,每次调用auf sc.next()都会读入您的一个号码(前1个,然后2个,依此类推)。

因此,在您的代码中,您不会以字符串形式读取它们并将其拆分,而只是使用sc.next()分别填充数组的每个索引。

(您可以使用sc.hasNext()查看是否已添加整个输入)。

10-07 15:58
查看更多