簡體   English   中英

Pascal三角形上的Java索引超出范圍錯誤

[英]Java Index Out Of Bounds Error on Pascal Triangle

我必須創建一個Pascal Triangle,當我運行代碼時,它給我一個數組超出范圍錯誤。 請幫忙。 我想我使用了一個很好的邏輯,但我無法得到結果。

import java.io.*;
public class Question_4
 {
 public static void main (String[] args)throws IOException
  {
      System.out.println("Enter the value of N");
      InputStreamReader x = new InputStreamReader (System.in);
      BufferedReader y = new BufferedReader (x);
      int n = Integer.parseInt (y.readLine ());
      int ar [] [] = new int [n] [(2*n)-1];
      int previous = 0;
      int next = 0;
      int se = 0;
      for (int row = 0 ; row<n ; row++)
       {
         se = (n - row) - 1;
         for (int column = 0 ; column < ((2*n)-1) ; column ++)
          {
              try
               {
                 previous = ar [row-1] [column+1];
                 next = ar [row-1] [column +3];
                }
              finally
               {
                 if (column < se)
                      ar [row] [column] = 0;
                 else if (column > (n-se))
                      ar [row] [column] = 0;
                 else if (row == 0 || row == 1)
                      ar [row] [column] = 1;
                 else
                      ar [row] [column] = (previous + next);
                }
            }
        }
      for (int i = 0;i<n;i++)
       {
           for (int j = 0; j<((2*n)-1);j++)
            System.out.print (ar [i] [j]);
           System.out.println ();
        }
    }
}

此行中的問題:

previous = ar [row-1] [column+1];

在第一次外部循環時,行值為0 ,所以0 - 1-1 ,這在數組的無效位置。

你聲明了這個數組:

int ar [] [] = new int [n] [(2*n)-1];

然后你有這個循環:

for (int column = 0 ; column < ((2*n)-1) ; column ++)

這意味着該列在某些時候將等於ar [] []中最后一個單元格的索引。 在你的循環中你打電話:

previous = ar [row-1] [column+1];
next = ar [row-1] [column +3];

這就是你得到indexOutOfBoundsException的原因。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM