2016-08-25 72 views
0
for(i=0; i<=2; i++){ 
    if(i=0){ 
     System.Out.println("Input x: "); 
     int x=input.nextInt(); 
     if(x==1){ 
      char[] a={'A','B','C'}; 
     } 
     else if(x=2){ 
      char[] a={'D','E','F'}; 
     } 
     else{ 
      char[] a={'G','H','I'}; 
     } 
    } 

由于循环&由输入x决定的值,a []的值将改变3次。我的问题是,如何将每个循环中[]的值存储到另一个变量,并使用这些值创建另一个多维数组?????请任何人都帮我这个。提前致谢。如何创建一个动态改变简单数组的多维数组?

+3

观看了第一和第三if语句:您正在使用的分配算子,不平等! – Baderous

+0

你有什么问题?据我看到你的代码不会编译。这是你想解决的问题吗? – talex

回答

0

一些代码来让你去:

char[][] matrix = new char[2][4]; 
for (int i=0; i < 2; i++) { 
    // now create an array for the columns 
    matrix[i]= new char[4]; 
    // now you could do 
    for (int j=0; j < 4; j++) { 
    matrix[i][j] = ... 
    } 
    // or 
    char[] row = { '1', '2', '3', '4' }; 
    matrix[i] = row; 
} 

的想法是,你先说你有多少行和列有。 然后迭代第一个维度,并且可以在每次迭代期间设置第二个维度的值。

+0

我不认为用这样的数组初始值设定是合法的...... –

+0

@StephenC为什么不呢? – user1803551

+0

@StephenC你是对的,谢谢你的输入! – GhostCat

1

很难确定你在找什么,但这可能会给你一些想法。至少,语法应该是正确的:

char[][] array = new char[3][]; 
for (int i = 0; i < array.length; i++) { 
    System.out.println("Input x: "); 
    int x = input.nextInt(); 
    if (x == 1) { 
     array[i] = new char[] {'A', 'B', 'C'}; 
    } else if (x == 2) { 
     array[i] = new char[] {'D', 'E', 'F'}; 
    } else { 
     array[i] = new char[] {'G', 'H', 'I'}; 
    } 
} 

注意事项:

  1. 案例是显著。它是System.out而不是System.Out
  2. 使用=进行赋值,使用==来测试原始类型的相等性。 (但通常不是其他类型!)
  3. 正确缩进和一致使用空白对于可读性非常重要。尝试遵守风格指南。
+0

你“注意事项”与案件有问题。多么讽刺:) – talex

+0

固定.................... –

0

我宁愿解决您的问题建立在一个相当不提示代码的要求,但在这里有云:

final int total=2; 
char[][] a=new char[total][]; 
for (int i=0;i<total;i++){ 
    System.Out.println("Input x: "); 
    int x=input.nextInt(); 
    switch(x){ 
     case 1: 
      a[i]=new char[]{'A','B','C'}; 
     break; 
     //Other cases... 
    } 
}