黑马程序员技术交流社区

标题: 程序怎么运行不出来呢?求解 [打印本页]

作者: 18338762337    时间: 2015-12-20 14:34
标题: 程序怎么运行不出来呢?求解


  1. public class Test {

  2.         public static void main(String[] args) {
  3.                 // TODO Auto-generated method stub
  4.        String strIn="5";//
  5.        int n=Integer.parseInt(strIn);
  6.        System.out.println("这是行列式为5的螺线型数组:");
  7.        int intA=0;
  8.        int[][]array=new int[n][n];
  9.        int intB;
  10.        if(n%2!=0){
  11.                intB=n/2+1;
  12.        }
  13.        else intB=n/2;
  14.        for(int i=0;i<intB;i++){
  15.                //从外向里循环
  16.                //从右向左横向开始
  17.                for(int j=i;j<n-i;j++){
  18.                        array[i][j]=intA;
  19.                        intA++;
  20.                }
  21.                for(int k=i+1;k<n-i;k++){
  22.                        array[k][n-i-1]=intA;
  23.                        intA++;
  24.                }
  25.                for(int l=n-i-2;1>=i;l--){
  26.                        array[n-i-1][l]=intA;
  27.                        intA++;
  28.                }
  29.                for(int m=n-i-2;m>i;m--){
  30.                        array[m][i]=intA;
  31.                        intA++;
  32.                }
  33.        }
  34.        for(int i=0;i<n;i++){
  35.                for (int j = 0; j < n; j++) {
  36.                         System.out.println(array[i][j]+"\t");
  37.                 }
  38.                System.out.println();
  39.        }
  40.         }

  41. }
复制代码

运行结果是这样的这是行列式为5的螺线型数组:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1
        at Test.main(Test.java:29)
作者: 孜孜不倦    时间: 2015-12-20 14:43
看不懂。
作者: 吕振廷    时间: 2015-12-20 18:40
66666666666666666
作者: 梦想家Eva    时间: 2015-12-20 22:20
28行29行的小字母L和数字1写错了吧,导致数组越界异常,看是不是这样的:
  1. public class Test {

  2.         public static void main(String[] args) {
  3.                 // TODO Auto-generated method stub
  4.        String strIn="5";//
  5.        int n=Integer.parseInt(strIn);
  6.        System.out.println("这是行列式为5的螺线型数组:");
  7.        int intA=0;
  8.        int[][]array=new int[n][n];
  9.        int intB;
  10.        if(n%2!=0){
  11.                intB=n/2+1;
  12.        }
  13.        else intB=n/2;
  14.        for(int i=0;i<intB;i++){
  15.                //从外向里循环
  16.                //从右向左横向开始
  17.                for(int j=i;j<n-i;j++){
  18.                        array[i][j]=intA;
  19.                        intA++;
  20.                }
  21.                for(int k=i+1;k<n-i;k++){
  22.                        array[k][n-i-1]=intA;
  23.                        intA++;
  24.                }
  25.                for(int l=n-i-2;l>=i;l--){
  26.                        array[n-i-1][l]=intA;
  27.                        intA++;
  28.                }
  29.                for(int m=n-i-2;m>i;m--){
  30.                        array[m][i]=intA;
  31.                        intA++;
  32.                }
  33.        }
  34.        for(int i=0;i<n;i++){
  35.                for (int j = 0; j < n; j++) {
  36.                         System.out.print(array[i][j]+"\t");
  37.                 }
  38.                System.out.println();
  39.        }
  40.         }

  41. }

复制代码


作者: 梦想家Eva    时间: 2015-12-20 22:23
就是这句:      for(int l=n-i-2;1>=i;l--)  第二个是数字一,应该是小写字母L的
作者: 18338762337    时间: 2016-1-19 13:45
梦想家Eva 发表于 2015-12-20 22:23
就是这句:      for(int l=n-i-2;1>=i;l--)  第二个是数字一,应该是小写字母L的

谢了,谢了,谢了,
作者: yi651312197    时间: 2016-1-19 20:11
这个代码我还没写出来,学习了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2