import java.util.Scanner;
import java.io.*;
public class Cakeminator{
public static void main(String[] args)throws IOException,ArrayIndexOutOfBoundsException{
int i,j,r=0,c=0;
InputStreamReader isr=new InputStreamReader(System.in);
BufferedReader br=new BufferedReader(isr);
Scanner stdin=new Scanner(System.in);
// String[][] a=new String[r][c];
// entering rows length
r=stdin.nextInt();
System.out.println("rows . "+r);
//entering columns length
c=stdin.nextInt();
System.out.println("cols . "+c);
String[][] a=new String[r][c];
//entering elements into matrix
for(i=0;i<=r-1;i++){
for(j=0;j<=c-1;j++){
a[i][j]=br.readLine();
}
}
// printing matrix
for(i=0;i<r;i++){
for(j=0;j<c;j++){
System.out.println("\t");
System.out.println(a[i][j]);
}
}
}
}
//在我的代码中更改数组声明位置之后。
答案 0 :(得分:0)
数组索引从0
开始,直到n-1
。所以改变你的循环:
for(i=0;i<=r;i++){
要
for(i=0;i<r;i++) {//go till r-1.
同时定义
String[][] a=new String[r][c];
从用户获得r
和c
之后,即在System.out.println("cols . "+c);
之后,当初始化r和c为0时,它将初始化为0行和0列。
答案 1 :(得分:0)
你的代码有两个缺陷,一个是你对二维数组的定义,第二个是循环条件。
在获取输入维度后定义数组。并将条件放入退出索引。
如果数组长度为n,则最大索引值为n-1
。更改您的代码如下。
import java.util.Scanner;
import java.io.*;
public class Cakeminator{
public static void main(String[] args)throws IOException,ArrayIndexOutOfBoundsException{
int i,j,r=0,c=0;
InputStreamReader isr=new InputStreamReader(System.in);
BufferedReader br=new BufferedReader(isr);
Scanner stdin=new Scanner(System.in);
// entering rows length
r=stdin.nextInt();
System.out.println("rows . "+r);
//entering columns length
c=stdin.nextInt();
System.out.println("cols . "+c);
String[][] a=new String[r][c];
//entering elements into matrix
for(i=0;i<=r-1;i++){
for(j=0;j<c;j++){
a[i][j]=br.readLine();
}
}
}
}
答案 2 :(得分:0)
实际上在您的代码中,您首先声明String数组,然后从运行时添加行和列。 因此,首先解析此接收行和列,然后声明String数组
import java.util.Scanner;
import java.io.*;
public class Cakeminator{
public static void main(String[] args)throws IOException,ArrayIndexOutOfBoundsException{
int i,j,r=0,c=0;
InputStreamReader isr=new InputStreamReader(System.in);
BufferedReader br=new BufferedReader(isr);
Scanner stdin=new Scanner(System.in);
// entering rows length
r=stdin.nextInt();
System.out.println("rows . "+r);
//entering columns length
c=stdin.nextInt();
System.out.println("cols . "+c);
String[][] a=new String[r][c];
//entering elements into matrix
for(i=0;i<=r;i++){
for(j=0;j<c;j++){
a[i][j]=br.readLine();
}
}
}
}
答案 3 :(得分:0)
在我看来,你应该改变一个地方。首先你应该把String[][] a = new String[r][c]
放在第System.out.println("cols . "+c)
行之后。