从5月底第一次看黑马训练营,就深深的被他吸引……
先谈谈一个面试题,前段时间看方老师javaweb的视频直播时,打印的图形如下
3 7
2 4 6 8
1 5 9
我写的代码如下:但是程序的通用性不强,只能输出小于100的数,要是想打印更大的数,还得改程序(如注释掉的,按这个方式下去写)。我总感觉这样写太傻了。期待准黑马们有更好的方法,有的话,贴上代码,感激不尽……[code=java]package cn;
import java.util.Scanner;
public class draw {
public static void main(String[] args) {
show();
}
static void show(){
int num ;
System.out.print("输入要排列的数:");
Scanner input = new Scanner(System.in);
num = input.nextInt();
int a = 1;
int height = num/4 + 1;
int width = num;
String tab = "";
int arr[][] = new int[height][width];
int x = height -1;
int y = 0;
boolean flag = false;
int num1 = num/10;
while(num1%10 != 0){
a++;
num1 = num1/10;
}
for(int i =1;i<= a;i++){
tab =tab + " ";
}
for(int i =1;i<= num;i++){
arr[x][y] = i;
y++;
if(!flag){
x--;
}
if(flag){
x++;
}
if(x<0){
flag = true;
x = x + 2;
}
if(x>height -1){
flag = false;
x = x -2;
}
}
for(int i =0;i< arr.length;i++){
for(int j =0;j<arr.length;j++){
if(arr[j] != 0){
if(a==1){
System.out.format("%1s", arr[j]);
}else if(a ==2){
System.out.format("%2s", arr[j]);
}//else if(a == 3){
//System.out.format("%3s", arr[j]);
//}
}else{
System.out.print(tab);
}
}
System.out.println();
}
}
}[/code]我学数学的,自学java也有1年多了,对j2se也弄的差不多了,现在准大四,9月底学校才放人去实习,唉,估计是赶不上黑马3期了。
[ 本帖最后由 毕仁杰 于 2011-07-18 20:41 编辑 ] |