Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 尽管循环在数组长度范围内,但仍存在越界异常_Java_Arrays_Char_2d_Indexoutofboundsexception - Fatal编程技术网

Java 尽管循环在数组长度范围内,但仍存在越界异常

Java 尽管循环在数组长度范围内,但仍存在越界异常,java,arrays,char,2d,indexoutofboundsexception,Java,Arrays,Char,2d,Indexoutofboundsexception,因此,程序应该根据用户输入制作一个奇数大小的数组,大小介于3和11之间,然后在特定位置用字符填充该板以获得模式。一切都很顺利,直到我尝试返回数组,该数组给了我2个越界异常,即使我将循环设置为小于维度。我在这里以5为例,试图得到一个5乘5的数组。这是主要的 public static void main (String [] args) { int dimension = findDimension(); char [] [] array2d = new char [dimens

因此,程序应该根据用户输入制作一个奇数大小的数组,大小介于3和11之间,然后在特定位置用字符填充该板以获得模式。一切都很顺利,直到我尝试返回数组,该数组给了我2个越界异常,即使我将循环设置为小于维度。我在这里以5为例,试图得到一个5乘5的数组。这是主要的

public static void main (String [] args) {

    int dimension = findDimension();
    char [] [] array2d = new char [dimension] [dimension];

    char star = '*';

    array2d = leftDiagonal(star, dimension); // Get out of bounds here
    print(array2d); 
} 
请求用户输入“findDimension()的方法”

方法打印数组

public static void print(char [] [] arrayParam) {
    System.out.println("-----------");
    System.out.println(arrayParam);
    System.out.println("-----------");
}
方法设置模式“Left对角线”

技术上应该是这样的

-----------                             
 * * * * *
 * * * * *
 * * * * *
 * * * * *
 * * * * *
----------- 
 -----------                             
  *    
    *   
      *  
        * 
          *
 -----------  

但目前我只想得到任何输出。我原本计划用空格“”填充所有空格,然后用字符填充需要的空格,但我甚至无法先打印出数组。感谢所有愿意提供帮助的人。

由于内部循环条件,出现错误

publicstaticchar[][]左对角(charstarparam,int-dimenParam){
char[][]leftD=新的char[dimenParam][dimenParam];
对于(int i=0;ij
leftD[i][j]=starParam;//在此处获取错误
}
}
返回leftD;
}
有很多方法可以解决这个问题。 您可以只打印阵列而不初始化它

publicstaticchar[][]左对角(charstarparam,int-dimenParam){
char[][]leftD=新的char[dimenParam][dimenParam];
对于(int i=0;i
谢谢你,我觉得没有早点注意到这一点很傻。我现在打印了一些东西,但我得到的是内存地址,而不是任何预期的输出。我将数组“array2d”设置为与我的left对角线方法相等,那么为什么会发生这种情况?我需要一个循环来打印内容吗?编辑了我的答案
我需要一个循环来打印内容吗?
没错!哦,对不起,我又住院了。这是我的一个坏习惯,谢谢你的帮助。很高兴和你谈话。祝你今天愉快D如果答案有帮助,请删除,然后。。。接受它
如果你想说“谢谢”,就投票或接受对方的答案,或者简单地通过给别人的问题提供一个很好的答案来提前回答。
-----------                             
 * * * * *
 * * * * *
 * * * * *
 * * * * *
 * * * * *
----------- 
 -----------                             
  *    
    *   
      *  
        * 
          *
 -----------