写一个打印矩形矩阵的程序:
结果类似:1 2 3 4
2 3 4 1
3 4 1 2
4 1 2 3我的源码如下:
import javax.swing.JOptionPane;public class HomeWork3
{
public static void main(String args[])
{
int i = Integer.parseInt(JOptionPane.showInputDialog("Please input the LENGTH:"));
int a[][] = new int[i][i];
for (int k = 0; k < i; k++)
{
a[1][k] = k+1;
System.out.print(a[1][k]);
System.out.print(' ');
}
for (int m = 2; m <= i; m++)
{
for (int n = 0; n < i; n++)
{
a[m][n] = a[m-1][n+1];
System.out.print(a[m][n]);
System.out.print(' ');
}
}
}
}编译时没有问题,可是运行时报错了:
1 2 3 4 5 6 7 8 9 10 2 3 4 5 6 7 8 9 10 Exception in thread "main" java.lang.Arr
ayIndexOutOfBoundsException: 10
at HomeWork3.main(HomeWork3.java:22)
------------------------------------------------------
Ps:22行指的是"a[m][n] = a[m-1][n+1];"这里.
------------------------------------------------------
希望能尽快解决 谢谢了!
结果类似:1 2 3 4
2 3 4 1
3 4 1 2
4 1 2 3我的源码如下:
import javax.swing.JOptionPane;public class HomeWork3
{
public static void main(String args[])
{
int i = Integer.parseInt(JOptionPane.showInputDialog("Please input the LENGTH:"));
int a[][] = new int[i][i];
for (int k = 0; k < i; k++)
{
a[1][k] = k+1;
System.out.print(a[1][k]);
System.out.print(' ');
}
for (int m = 2; m <= i; m++)
{
for (int n = 0; n < i; n++)
{
a[m][n] = a[m-1][n+1];
System.out.print(a[m][n]);
System.out.print(' ');
}
}
}
}编译时没有问题,可是运行时报错了:
1 2 3 4 5 6 7 8 9 10 2 3 4 5 6 7 8 9 10 Exception in thread "main" java.lang.Arr
ayIndexOutOfBoundsException: 10
at HomeWork3.main(HomeWork3.java:22)
------------------------------------------------------
Ps:22行指的是"a[m][n] = a[m-1][n+1];"这里.
------------------------------------------------------
希望能尽快解决 谢谢了!
解决方案 »
- 运行时错误如何解决?
- 关于SWT多线程的问题。
- 这个程序怎么画不出来图 但是可以运行 高手指点 是一个简单的画图程序
- 关于编码转换
- 一个lastIndexOf的用法题, 请高手解决
- SVN图形界面开发
- 怎!!样用“自省”的方式更改一个javabean的属性值
- [急问]java txt文件插入换行符
- unicode 与 gb2312 转换,在dos 下,怎么转换不了?(附程序)
- 请教使用JList JComboBox JTree(这个不知道是不是这个名字 反正是树型结构)的用法
- 如何来检测软件在测试过程中覆盖率?有这样工具吗?
- 同舟共济:请问这个程序内部的流程是怎么样的??(就是说程序怎么一步一步走的)
改成下面的样子,没错了,但是打不出你要的结果,你自己再看看吧package mynet;import javax.swing.JOptionPane;public class HH {
public static void main(String args[]) {
int i = Integer.parseInt(JOptionPane
.showInputDialog("Please input the LENGTH:")); int a[][] = new int[i][i];
for (int k = 0; k < i; k++) {
a[1][k] = k + 1;
System.out.print(a[1][k]);
System.out.print(' ');
} for (int m = 2; m < i; m++) {
for (int n = 0; n < i-1; n++) {
a[m][n] = a[m - 1][n + 1];
System.out.print(a[m][n]);
System.out.print(' ');
}
}
}
}
数组下标越界了!!!
如果你在命令行输入的是4,那么"for (int n = 0; n < i; n++)"中你的i的值就是4,
而你的"a[m][n] = a[m-1][n+1]"中的n+1的值已经超出了你的数组元素的索引最大值,
改改吧!
关键语句:
a[i][j] = a[i-1][j+1>=a[max-1].length?0:j+1];
==========================
||
j+1>=a[max-1].length?0:j+1
-----------------------------
*/
//源代码如下,再jb中测试通过
import javax.swing.JOptionPane; class Untitled1
{
public static void main(String args[])
{
int max = Integer.parseInt(JOptionPane.showInputDialog("Please input the LENGTH:")); int a[][] = new int[max][max];
for (int k = 0; k < a[max-1].length; k++) {
a[0][k] = k + 1;
System.out.print(a[0][k]);
System.out.print(' ');
}
System.out.println("\n");
for (int i = 1; i < a.length; i++)
{
for (int j = 0; j < a[max-1].length; j++)
{
a[i][j] = a[i-1][j+1>=a[max-1].length?0:j+1];
System.out.print(a[i][j]);
System.out.print(' ');
}
System.out.println("\n");
} }
}