【发布时间】:2014-04-18 12:03:17
【问题描述】:
我已经制作了二维数组来存储模式[用户定义]及其特征[用户可以决定每个模式的特征数]。我必须将此结构分为两部分 TR1 和 TR2,以便每个部分的一半特征模式进入 TR1,剩下的一半进入 TR2。 相同的代码
int n;//No of Patterns
int f=0;;//No of Features
System.out.println("Enter No of Patterns:");
n=Integer.parseInt(input.readLine());
//2-D array to store Features
int pattern[][]= new int[n][20];
int tr1[][]=new int[n][20];//TR1
int tr2[][]=new int[n][20];//TR2
//No of Features for each Pattern
for(int i=0;i<n;i++)//NO of Features for each Pattern
{
System.out.println("Enter No of Features for Pattern "+(i+1)+" : ");
f=Integer.parseInt(input.readLine());
pattern[i]=new int[f];
tr1[i]=new int[f/2];//definining size of TR1
tr2[i]=new int[f/2];//definining size of TR2
}
//Features of each pattern
for(int i=0;i<n;i++)
{
System.out.println("Enter Features for Pattern "+(i+1)+" : ");
for(int j=0;j<pattern[i].length;j++)
{
pattern[i][j]=Integer.parseInt(input.readLine());
}
}
//Split into TR1 & TR2
for(int i=0;i<n;i++)
{
for(int j=0;j<pattern[i].length/2;j++)
{
tr1[i][j]=pattern[i][j];
}
int x=0;//Fill TR2 from 0 index
for(int j=pattern[i].length;j<pattern[i].length;j++)
{
tr2[i][x]=pattern[i][j];
x++;
}
}
//Print Features of each pattern
for(int i=0;i<n;i++)
{
for(int j=0;j<pattern[i].length;j++)
{
System.out.print(" "+pattern[i][j]+" ");
}
System.out.println();
}
//Print TR1
for(int i=0;i<n;i++)
{
for(int j=0;j<tr1[i].length;j++)
{
System.out.print(" "+tr1[i][j]+" ");
}
System.out.println();
}
//Print TR2
for(int i=0;i<n;i++)
{
for(int j=0;j<tr2[i].length;j++)
{
System.out.print(" "+tr2[i][j]+" ");
}
System.out.println();
}
问题是 TR2 中的所有值在输出中都变为 0。但是 TR1 输出是正确的。
【问题讨论】:
-
for(int j=pattern[i].length;j<pattern[i].length;j++)这行是问题 -
for(int j=pattern[i].length/2;j<pattern[i].length;j++)//这样做了,但是在代码中的tr2[i][x]=pattern[i][j];行上给出了绑定异常的数组