java2程序设计(电子工业出版社)
第二章的一个课后题,要求输出以下格式的数组:
1 2 4 10
3 5 9 11
6 8 12 15
7 13 14 16以下是程序:不过有点问题。public class Array
{
public static int add(int n,int count,int ary[][])
{
int i;
if(n<6)
{
for(i=0;i<n;i++)
ary[i][n-i-1]=count++;
}
else
{
for(i=n-3;i<n-2;i++)
ary[i][n-i-1]=count++;
}
return count;
}
public static int dec(int n,int count,int ary[][])
{
int i;
if(n<5)
{
for(i=n-1;i>=0;i--)
ary[i][n-i-1]=count++;
}
else
{
if(n==5)
{
for(i=n-2;i>0;i--)
ary[i][n-i-1]=count++;
}
else if(n==7)
ary[3][3]=16;
}
return count;
} public static void main(String args[])
{
int n=1,count=1;
int ary[][]=new int[5][5];
do
{
switch(n%2)
{
case 0:count=add(n,count,ary);
break;
case 1:count=dec(n,count,ary);
break;
}
}while((n++)<8);
}
int m,n;
for(m=0;i<4;i++) //以下两个for语句报错:第一个是非法的类开始,第二个是需要标识符。请问怎么修改?
{
for(n=0;j<4;j++)
{
System.out.print(ary[m][n]);
if(n==3)
System.out.println();
}
}
}
第二章的一个课后题,要求输出以下格式的数组:
1 2 4 10
3 5 9 11
6 8 12 15
7 13 14 16以下是程序:不过有点问题。public class Array
{
public static int add(int n,int count,int ary[][])
{
int i;
if(n<6)
{
for(i=0;i<n;i++)
ary[i][n-i-1]=count++;
}
else
{
for(i=n-3;i<n-2;i++)
ary[i][n-i-1]=count++;
}
return count;
}
public static int dec(int n,int count,int ary[][])
{
int i;
if(n<5)
{
for(i=n-1;i>=0;i--)
ary[i][n-i-1]=count++;
}
else
{
if(n==5)
{
for(i=n-2;i>0;i--)
ary[i][n-i-1]=count++;
}
else if(n==7)
ary[3][3]=16;
}
return count;
} public static void main(String args[])
{
int n=1,count=1;
int ary[][]=new int[5][5];
do
{
switch(n%2)
{
case 0:count=add(n,count,ary);
break;
case 1:count=dec(n,count,ary);
break;
}
}while((n++)<8);
}
int m,n;
for(m=0;i<4;i++) //以下两个for语句报错:第一个是非法的类开始,第二个是需要标识符。请问怎么修改?
{
for(n=0;j<4;j++)
{
System.out.print(ary[m][n]);
if(n==3)
System.out.println();
}
}
}
int n=1,count=1; 和
int m,n;
而且这一句中又有一个j没有定义for(n=0;j <4;j++)
{
int n=1,count=1;
int ary[][]=new int[5][5];
do
{
switch(n%2)
{
case 0:count=add(n,count,ary);
break;
case 1:count=dec(n,count,ary);
break;
}
}while((n++) <8);
int i,j;
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{
System.out.print(ary[i][j]);
if(n==3)
System.out.println();
}
}
}
}
但运行时提示数组越界
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
at Test.add(Test.java:15)
at Test.main(Test.java:49)
package bt_lose;
/**
*
* @author botao
*程序整体还是运行不起来 <br>
*出现了一个数组下标越界的异常。<br>
*你的算法我也没看。<br>
*按照我的理解输出应该是<br>
* 1 2 6 7
* 3 5 8 13
* 4 9 12 14
* 10 11 15 16
* 但是和你给的不一样。
*/
public class Array { public static int add(int n, int count, int ary[][]) {
int i;
if (n < 6) {
for (i = 0; i < n; i++)
ary[i][n - i - 1] = count++;
} else {
for (i = n - 3; i < n - 2; i++)
ary[i][n - i - 1] = count++;
}
return count;
} public static int dec(int n, int count, int ary[][]) {
int i;
if (n < 5) {
for (i = n - 1; i >= 0; i--)
ary[i][n - i - 1] = count++;
} else {
if (n == 5) {
for (i = n - 2; i > 0; i--)
ary[i][n - i - 1] = count++;
} else if (n == 7)
ary[3][3] = 16;
}
return count;
} public static void main(String args[]) {
int n = 1, count = 1;
int ary[][] = new int[5][5];
do {
switch (n % 2) {
case 0:
count = add(n, count, ary);
break;
case 1:
count = dec(n, count, ary);
break;
}
} while ((n++) < 8);
}
/**
* 看你代码的功能好象是要完成输出,所以方法名字就起成了print,<br>
* 至于i和j两个参数,是你写在for循环中的我也不知道作用是干什么,<br>
* 二维数组ary好象是输出源
* @param i
* @param j
* @param ary
*/
public static void print(int i, int j, int[][] ary) {
int m, n; for (m = 0; i < 4; i++) // 以下两个for语句报错:第一个是非法的类开始,第二个是需要标识符。请问怎么修改?
{
for (n = 0; j < 4; j++) {
System.out.print(ary[m][n]);
if (n == 3)
System.out.println();
}
}
}
}你说的那两段代码必须写在方法中,或者静态块中
for(m=0;i <4;i++) //以下两个for语句报错:第一个是非法的类开始,第二个是需要
{
for(n=0;j <4;j++)
{
System.out.print(ary[m][n]);
if(n==3)
System.out.println();
}
在那里面???
不在方法体里面亚???这个循环算什么呀?????
import java.io.*;
import java.util.*; public class Java2181
{
//int N;
public static void main(String [] args){
try{
System.out.print("输入矩阵的边数N:");
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String st=(String)br.readLine();
System.out.println();
int N = Integer.parseInt(st);//System.out.print("输出:"+N);
int[][] intArray = new int[N][N];
Java2181 main = new Java2181();
main.createArray(intArray,N);
for(int i = 0; i < N; i++) {
for(int j = 0; j < N; j++) {
System.out.print(intArray[i][j]+(intArray[i][j]>=10 ? " " : " "));
}
System.out.println();
} }
catch(IOException e){}
}
private void createArray(int[][] array, int n)
{
int b=1;
for(int i=0;i<(2*n-1);i++)
{
int j;
if((i%2)==0)
{
if(i<n)
{
for(j=0;j<=i;j++)
{
array[i-j][j]=b;
b++;
}
}
else
{
for(j=n-1;j>=(i-n+1);j--)
{
array[j][i-j]=b;
b++;
}
}
}
else
{
if(i<n)
{
for(j=0;j<=i;j++)
{
array[j][i-j]=b;
b++;
}
}
else
{
for(j=n-1;j>=(i-n+1);j--)
{
array[i-j][j]=b;
b++;
}
}
}
}
}
}