代码(部分)如下:
import java.util.Scanner;
public class project_modified
{
static boolean judge=true;
static int sequence=0;
static int x;
static int y;
static int line;
static int row;
static char cha = 0;
public static void main(String[] args)
{
//input
Scanner scanner=new Scanner(System.in);
System.out.println("Welcome to PicPie Demo"+"\nInput X and Y (such as 3*3):");
String data=scanner.next();
if(data.length()==3)
{
char xChar=data.charAt(0);
char yChar=data.charAt(2);
Integer x=Integer.parseInt(xChar+"");
Integer y=Integer.parseInt(yChar+"");
System.out.println(x+" "+y);
//set a matrix
SetMatrix();}
static String[][] matrix=new String[x][y];
static void SetMatrix()
{
System.out.println(x+" "+y);
for(int line1=0;line1<(x-1);line1++)
{
for(int row1=0;row1<y;row1++)
matrix[line1][row1]=line1*y+row1+1+"";
}
for(int row1=0;row1<(y-1);row1++)
{
matrix[(x-1)][row1]=(x-1)*y+row1+1+"";
}
matrix[x-1][y-1]=" ";
}
问题是前一个System.out.println(x+" "+y);如果输入的是“3*3”,输出的是“3 3”
后一个System.out.println(x+" "+y);输出的却是“0 0”
为什么?
------解决方案--------------------
另外,程序加载的时候,在进入main之前,先执行定义的变量,如下
static boolean judge = true;
static int sequence = 0;
static int x;
static int y;
static int line;
static int row;
static char cha = 0;
等等
以及static String[][] matrix = new String[x][y];
而x,y默认为0,所以matrix是0行0列
后面即使你执行了main中的setmatrix方法,当matrix[line1][row1] = line1 * y + row1 + 1 + "";
的时候,第一次执行就是matrix[0][0],但是matrix是0行0列的哦,而matrix[0][0]表示第一行第一列,所以会报这样的错误:
java.lang.ArrayIndexOutOfBoundsException(数组索引号超出范围)