【问题标题】:How to create a multidimensional array with dynamically changing simple arrays?如何创建具有动态变化的简单数组的多维数组?
【发布时间】:2016-08-25 13:23:18
【问题描述】:
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'};
        }
    } 

a[] 的值会因为 for 循环和输入 x 决定的值而改变 3 次。我的问题是,如何将每个循环中的 a[] 值存储到另一个变量并使用这些值创建另一个多维数组??????请任何人帮助我。提前致谢。

【问题讨论】:

  • 注意第一个和第三个 if 语句:您使用的是赋值运算符,而不是相等!
  • 你有什么问题?据我所知,您的代码将无法编译。这是你想解决的问题吗?

标签: java arrays if-statement for-loop


【解决方案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. 正确的缩进和一致的空格使用对于可读性很重要。尽量遵守风格指南。

【讨论】:

  • 您的“注意事项”有问题。真是讽刺:)
【解决方案2】:

一些代码可以帮助你:

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;
}

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

【讨论】:

  • @StephenC 为什么不呢?
  • 数组初始值设定项正确,赋值错误。
  • 再次感谢。更新了示例部分。
  • @user1803551 - 我指的是 GhostCat 代码的原始版本。 “为什么不”是代码在语法上无效。关键是这种初始化器只能在声明初始化或new ...中使用,而不能在普通赋值中使用。
【解决方案3】:

我宁愿根据需求解决您的问题,也不愿使用非暗示性的代码,但这里是:

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...
     }
}

【讨论】:

    猜你喜欢
    • 2020-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多