パスカルの三角形を生成するコードを Java で作成しました。自宅に 2 台のラップトップがあり、1 台には Windows Vista Home Basic が搭載され、もう 1 台には Windows 8.1 SingleLanguage が搭載されており、どちらにも同じバージョンの Java がロードされています。以下のコードは Win Vista では問題なく動作しますが、同じコードを Win 8.1 で実行しようとすると論理エラーが発生します。これにはどのような理由が考えられますか?
これは私が最近コンパイルしたコードのドラフトです:
import java.util.*;
class PascalsTriangle
{
int ROW,max=0;
void main ()
{
Scanner sc = new Scanner ( System.in );
System.out.println(" Input the number of rows in the Pascals Triangle to be generated. ");
ROW = sc.nextInt();
int[][] pascal = new int [ROW+1][];
pascal[1] = new int [1+2];
pascal[1][1] = 1;
int i,k=0,j,len=0;
String str="";
for( i=2;i<=ROW;i++ )
{
pascal[i] = new int [i+2];
for( j=i;j<pascal[i].length-1;j++ )
{
pascal[i][j] = pascal[i-1][j-1] + pascal[i-1][j];
str = Integer.toString(pascal[i][j]);
len = str.length();
if( len>max )
{
max = len;
}
}
}
for( i=1;i<=ROW;i++ )
{
for( k=ROW;k>i;k-- )
{
System.out.format( "%-" + max + "s", " " );
}
for( j=i;j<pascal[i].length-1;j++ )
{
System.out.format( "%-" + (max+max) + "s", pascal[i][j] );
}
System.out.println();
}
}