我已经制作了2-D数组来存储模式[用户定义]及其功能[用户可以决定每种模式的功能没有]。我必须将这个结构分为两部分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输出是正确的。
答案 0 :(得分:0)
在for
循环中,条件j < pattern[i].length
为false,因为:
int j = pattern[i].length;
由于条件第一次为假,for
循环中的语句根本没有执行。这就是TR2
的元素保持未初始化的原因,这就是为什么TR2
的元素变为{ {1}}。
0
查看链接,它会有所帮助。 java-how-to-split-a-2d-array-into-two-2d-arrays