转置java错误
我试着做一个2D数组程序来演示转置,但是我得到了一个错误。。这是我的密码转置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;
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
但实际上,您希望插入10x10项:int myArray1[][] = new int[9][9];
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开始。
什么类型的错误?编译错误或运行时错误。请发布完整的错误消息,包括运行时错误的堆栈跟踪。可能重复欢迎使用堆栈溢出!为确保您在本网站上的成功,请阅读并应用和页面中的信息。嘿,感谢您的回复。.现在我在进行更改后得到了这样的回复给我奇怪的输出。你的数组如下[[I@6ea12c19Your数组如下[[I@6ea12c19Your数组如下[[I@6ea12c19.........Your数组如下[[I@6ea12c19Your数组如下[[I@6ea12c1进程结束,退出代码0您正在打印for(i=0;i<9;i++)
这是一个指针/引用数组。您必须在写入数组时从数组中读取:myArray2
谢谢您,先生..我是编程新手,所以会犯错误呵呵..:DSystem.out.print(“您的数组如下”+myArray2[i][j]);
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
- 在输入步骤中,在执行转置之前,您正在打印