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()查看是否已添加整个输入)。