Когда вы вызываете s.nextInt()
, он читает только до конца целого числа, оставляя новую строку в буфере.
Поэтому при последующем вызове nextLine () он читает новую строку между 4
и aba
.
Чтобы обойти это, после вызова nextInt()
, вызовите nextLine()
, чтобы переместить буфер за новую строку.
Scanner s = new Scanner(System.in);
int n = s.nextInt();
String strings[] = new String[n];
int count = 0;
int i,j=0;
s.nextLine();
for(int a=0 ; a<n ; a++){
strings[a] = s.nextLine();
}
и
int q = s.nextInt();
String queries[] = new String[q];
s.nextLine();
for(int b=0; b<q;b++){
queries[b] = s.nextLine();
}
Редактировать:
Кроме того, в финале дляВы поставили цикл:
for(j=0; j <= queries.length; j++){
, но это приведет к IndexOutOfBoundsException
.Вы действительно хотите:
for(j=0; j < queries.length; j++){
Редактировать 2:
Предыдущее редактирование применяется к обоим циклам for в конце - вы хотитепредельный срок цикла for равен i<strings.length
и j<queries.length
соответственно.
Кроме того, для достижения ожидаемого результата порядок циклов for должен быть обратным:
for(j=0; j < queries.length; j++){
int count = 0;
for(i=0; i < strings.length; i++) {
if (queries[j].compareTo(strings[i] == 0)) {
count++;
}
}
System.out.orintln(count);
}