【发布时间】:2020-04-14 19:07:36
【问题描述】:
我正在尝试使用用户输入的 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
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
.#.##
#####
##...
###..
#####
【问题讨论】:
-
您能否编辑问题以包含您正在使用的输入?并且把它变成一个我们可以运行的完整程序
-
@Joni 抱歉耽搁了我去吃晚饭。