当前位置: 代码迷 >> Eclipse >> 为什么数据在不同函数中不同(!)
  详细解决方案

为什么数据在不同函数中不同(!)

热度:82   发布时间:2016-04-23 13:55:12.0
为什么数据在不同函数中不同(求助!!)
代码(部分)如下:
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(数组索引号超出范围)
  相关解决方案