Я пытаюсь использовать введенные пользователем N строк по N символов для выполнения некоторых операций. Но сначала мне нужно знать N и еще один вводимый int. Когда я определяю N и другое целое число K, а затем записываю 5 строк (в данном случае) по 5 символов каждый, программа работает хорошо. Но когда я использую представленную строку a (которую я затем разделил бы на 2 целых числа, N и K, не показанные здесь, чтобы не усложнять вещи), возникает ошибка. Даже если я сейчас ввожу 6 строк по 5 последних из 5 символов в каждой, программа выдает ошибку, так как для мультифункции не найдено ни одной строки. Я не понимаю, в чем проблема, и если я удаляю строку a и просто определяю N и K, программа работает хорошо. Что еще более удивительно, программа запускается, если я использую интерактивную консоль вместо ввода текста и пишу термины один за другим.
static String [][] vetor (int N) {
Scanner scan = new Scanner(System.in);
String[][] multi = new String [N][N];
for (int i = 0 ; i<N ; i++){
String forest = scan.nextLine();
String[] chars = forest.split("");
for (int k=0; k<N; k++){
multi[i][k]= chars [k];
}
}
return multi;
}
public static void main(String args[]) {
Scanner scan = new Scanner(System.in);
String a = scan.nextLine();
int N = 5;
int K = 5;
String [][] multi = vetor(N);
Я пробовал много вещей, но не могу понять это. Я не нашел подобных вопросов, но не стесняйтесь перенаправить меня к объяснению.
Редактировать: аналогичную программу, которую можно запустить (с возможным вводом вниз (K <= N)): </p>
import java.util.Scanner;
import java.util.Arrays;
public class Main {
static int[] numerificar() {
Scanner myObj = new Scanner(System.in);
String Input = myObj.nextLine();
String[] Inputs = Input.split(" ", 0);
int size = Inputs.length;
int [] a = new int [size];
for(int i=0; i<size; i++) {
a[i] = Integer.parseInt(Inputs[i]);}
return a;
}
static String [][] vetor (int N) {
Scanner scan = new Scanner(System.in);
String[][] multi = new String [N][N];
for (int i = 0 ; i<N ; i++){
String forest = scan.nextLine();
String[] chars = forest.split("");
for (int k=0; k<N; k++){
multi[i][k]= chars [k];
}
}
return multi;
}
public static void main(String args[]) {
Scanner scan = new Scanner(System.in);
int[] a = numerificar();
int N = a[0];
int K = a[1];
int cadeira = 0;
String [][] multi = vetor(N);
for (int i = 0 ; i<N ; i++){
if (cadeira == 1) {
break;
}
for (int k=0; k<N-K+1; k++){
if (cadeira == 1) {
break;
}else if( multi[i][k].equals(".")){
for (int j=0; j<K; j++){
if(multi[i][k+j].equals( "#")){
k+=j;
break;
} else if (j == K-1) {
cadeira = 1;
}
}
}
}
}
System.out.println(cadeira);
}
}
5 3
.#.##
#####
##...
###..
#####
В этом случае на выходе должно быть 1.