我想解决的问题是:
Sereja有一个数组a,由n个整数a1,a2,...组成。男孩不能坐着什么都不做,他决定研究一个阵列。 Sereja拿了一张纸写出了m个整数l1,l2,...,lm(1≤li≤n)。对于每个数字li,他想知道有多少不同的数字留在位置li,li + 1,...,n。形式上,他想找到ali,ali + 1,...,an。?
中不同数字的数量Sereja写出了必要的数组元素,但阵列太大了,男孩时间紧迫。帮助他,为每个li找到所描述问题的答案。
我需要能够读取这样的输入:
10 10
1 2 3 4 1 2 3 4 100000 99999
1
2
3
4
5
6
7
8
9
10
我尝试使用缓冲读卡器,但我总是遇到运行时错误
import java.util.ArrayList;
import java.util.Scanner;
import java.io.*;
public class Main
{
public static void main(String[] args)
{
Scanner scan = new Scanner(new BufferedInputStream(System.in));
int n = scan.nextInt();
int m = Integer.parseInt(scan.nextLine());
int[] a = new int[n];
int[] l = new int[m];
for(int i=0; i<n-1; i++)
{
a[i] = scan.nextInt();
}
a[n] = Integer.parseInt(scan.nextLine());
for(int j=0; j<m; j++)
{
l[j] = Integer.parseInt(scan.nextLine());
}
int counter = 0;
ArrayList<Integer> list = new ArrayList<Integer>();
for(int k=0; k<m; k++)
{
for(int x=l[k]; x<= n; x++)
{
if(!(list.contains(x)))
{
list.add(x);
counter++;
}
}
System.out.println(counter);
}
}
}
每当我运行此程序时,都会出现运行时错误。我需要通过上述输入获得的输出是 6 6 6 6 6 五 4 3 2 1
为什么不起作用?
好的,我试过了:
import java.io.*;
import java.util.ArrayList;
public class Main
{
public static void main(String[] args) throws IOException
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] tokens = br.readLine().split(" ");
int n = Integer.parseInt(tokens[0]);
int m = Integer.parseInt(tokens[1]);
String[] tokenstwo = br.readLine().split(" ");
int[] a = new int[n];
int[] l = new int[m];
for(int i=0; i<n; i++)
{
a[i] = Integer.parseInt(tokenstwo[i]);
}
for(int j=0; j<m; j++)
{
l[j] = Integer.parseInt(br.readLine());
}
int counter = 0;
ArrayList<Integer> list = new ArrayList<Integer>();
for(int k=0; k<m; k++)
{
for(int x=l[k]; x<= n; x++)
{
if(!(list.contains(x)))
{
list.add(x);
counter++;
}
}
System.out.println(counter);
}
}
}
它说了一些IOException。因此,我在顶部添加了抛出ioexception。它仍然会给出运行时错误。
答案 0 :(得分:0)
尝试使用以下代码进行输入。适合您的需要。
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] tokens = br.readLine().split(" ");
int n1 = Long.parseLong(tokens[0]);