转置java错误

转置java错误,java,arrays,multidimensional-array,transpose,Java,Arrays,Multidimensional Array,Transpose,我试着做一个2D数组程序来演示转置,但是我得到了一个错误。。这是我的密码 import java.util.Scanner; /* To demonstrate TRANSPOSE USING 2-D array */ public class Array_2ddd { public static void main(String args[]) { Scanner s1 = new Scanner(System.in); int i, j;

我试着做一个2D数组程序来演示转置,但是我得到了一个错误。。这是我的密码

import java.util.Scanner;

/* To demonstrate TRANSPOSE USING 2-D array */
public class Array_2ddd {
    public static void main(String args[]) {
        Scanner s1 = new Scanner(System.in);
        int i, j;
        int myArray1[][] = new int[9][9];
        int myArray2[][] = new int[9][9];
        for (i = 0; i < 9; i++) {
            for (j = 0; j < 9; j++) {
                System.out.println("Enter array from 1 to 9");
                myArray1[i][j] = s1.nextInt();
                System.out.print("your array is" + myArray2[i][j]);
            }
        }
        // Transposing now...
        for (i = 0; i < 9; i++) {
            for (j = 0; j < 9; j++) {
                myArray2[i][j] = myArray1[j][i];
            }
        }
        // After transposing
        for (i = 0; i < 9; i++) {
            for (j = 0; j < 9; j++) {
                System.out.print("Your array is as follow" + myArray2[i][j]);
            }
        }
    }
}
import java.util.Scanner;
/*使用二维数组演示转置*/
公共类数组\u 2ddd{
公共静态void main(字符串参数[]){
扫描仪s1=新的扫描仪(System.in);
int i,j;
int myArray1[][]=新int[9][9];
int myArray2[][]=新int[9][9];
对于(i=0;i<9;i++){
对于(j=0;j<9;j++){
System.out.println(“从1到9输入数组”);
myArray1[i][j]=s1.nextInt();
System.out.print(“您的数组是”+myArray2[i][j]);
}
}
//现在换位。。。
对于(i=0;i<9;i++){
对于(j=0;j<9;j++){
myArray2[i][j]=myArray1[j][i];
}
}
//换位后
对于(i=0;i<9;i++){
对于(j=0;j<9;j++){
System.out.print(“您的数组如下”+myArray2[i][j]);
}
}
}
}
  • 编辑:运行时我的错误(已解决)
  • 编辑2:已解决

  • 编辑3:循环是无限的。它不断地向用户询问值,即使我在写i时,你将矩阵定义为9x9

        int myArray1[][] = new int[9][9];
    
    但实际上,您希望插入10x10项:

     for (i = 0; i <= 9; i++)
        {
            for (j = 0; j <= 9; j++)
    

    for(i=0;i您还没有关闭第一个外部for循环,即第17行,并将数组大小更改为10,因为您希望获得10个输入(对于0到9=10的值).

    您的代码中存在多个错误,建议将数组的维数声明为最终整数,这样您的代码适用于所有矩阵大小,并且调试更容易。在原始代码中,错误为:

    • 在输入步骤中,在执行转置之前,您正在打印
      myArray[2]
      的一个元素。这意味着您将得到
      您的数组为0
    • 在注释为“转置后”的部分中,您的数组输出错误。即,对于每个条目,您调用
      System.out.print(“您的数组如下”+myArray2[i][j]);
      ,并且您忘记在每行之后添加新行(当内部循环完成时)

    • “。即使在我写我可以发布错误时,它也会不断向用户请求值?数组索引从0开始。
      for(i=0;i<9;i++)
      什么类型的错误?编译错误或运行时错误。请发布完整的错误消息,包括运行时错误的堆栈跟踪。可能重复欢迎使用堆栈溢出!为确保您在本网站上的成功,请阅读并应用和页面中的信息。嘿,感谢您的回复。.现在我在进行更改后得到了这样的回复给我奇怪的输出。你的数组如下[[I@6ea12c19Your数组如下[[I@6ea12c19Your数组如下[[I@6ea12c19.........Your数组如下[[I@6ea12c19Your数组如下[[I@6ea12c1进程结束,退出代码0您正在打印
      myArray2
      这是一个指针/引用数组。您必须在写入数组时从数组中读取:
      System.out.print(“您的数组如下”+myArray2[i][j]);
      谢谢您,先生..我是编程新手,所以会犯错误呵呵..:D
      for (i = 0; i < 9; i++) {
          for (j = 0; j < 9; j++)
      
      public static void main(String args[]) {
          final int m = 9; // Rows
          final int n = 9; // Columns
          Scanner s1 = new Scanner(System.in);
          int i, j;
      
          int myArray1[][] = new int[m][n]; // Original array, m rows n cols
          int myArray2[][] = new int[n][m]; // Transposed array, n rows m cols
      
          // Input
          for (i = 0; i < m; i++) {
              for (j = 0; j < n; j++) {
                  // Should be only prompt.
                  // Improved to show which entry will be affected.
                  System.out.printf("[%d][%d]" + "Enter array from 1 to 9\n", i, j); 
                  myArray1[i][j] = s1.nextInt();
              }
          }
      
          // Transposing now (watch for the ordering of m, n in loops)...
          for (i = 0; i < n; i++)
          {
              for (j = 0; j < m; j++)
              {
                  myArray2[i][j] = myArray1[j][i];
              }
          }
      
          // After transposing, output
          System.out.print("Your array is:\n");
          for (i = 0; i < m; i++) {
              for (j = 0; j < n; j++) {
                  System.out.print(myArray1[i][j] + " ");
              }
              System.out.println(); // New line after row is finished
          }
      
          System.out.print("Your transposed array is:\n");
          for (i = 0; i < n; i++) {
              for (j = 0; j < m; j++) {
                  System.out.print(myArray2[i][j] + " ");
              }
              System.out.println();
          }
          s1.close();
      }
      
      Your array is:
      0 1 2 3 
      4 5 6 7 
      8 9 0 1 
      Your transposed array is:
      0 4 8 
      1 5 9 
      2 6 0 
      3 7 1