7-3 宠魅之冰空精灵 (20分) java

(太累了出个水题给你们福利下) 冰空精灵 元素界-冰系-精灵族-高等战将级。 上半身为类似人的形态,下半身是浑浊的冰雪。冰空精灵的身体被厚厚的冰晶覆盖,相当于时时刻刻都施加了技能冰铠。它拥有高出其他任何生物的掌控冰的能力,在各种极地的矿石的培养下,实力可以不断的提升。 经历了长时间的战斗,楚暮的月光狐成长为三段三阶,然而月光狐终究只是奴仆级魂宠。为了成为囚岛之王,楚暮必定要捕获战将级魂宠。不久前楚暮发现了一只二段三阶的高天赋冰空精灵。经过多日的观察楚暮发现冰空精灵的活动范围为一个底边N(N为小于70的奇数)高为(N+1)/2的等腰三角形。聪明的ACMER帮忙打印出冰空精灵的活动范围,活动边界用"@"打印,内部用"~"打印。

输入格式: N(N为<70的奇数) 输入到文件尾结束

输出格式:
打印的图形 每2组输出之间相隔一个空行

输入样例:
在这里给出一组输入。例如:

7
9
11

输出样例:
太乱了就不贴了

这题我一定要写下来。又碰到字符数组的坑了。字符数组初始化的时候里面的元素是ASCII码的0而不是字符‘0’,判断元素有没有被赋值是转为int判断是否等于0,而不是直接==‘0’。另外直接在控制台打印也是个空格,但不是我们所想的空格,我们想的是ASCII里面的那个值是32的空格。还有一点是java如何判断文件尾,java里面似乎没有EOF,所以写个死循环一直读就好

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

//** Class for buffered reading int and double values *//*
class Reader {
	static BufferedReader reader;
	static StringTokenizer tokenizer;

	// ** call this method to initialize reader for InputStream *//*
	static void init(InputStream input) {
		reader = new BufferedReader(new InputStreamReader(input));
		tokenizer = new StringTokenizer("");
	}

	// ** get next word *//*
	static String next() throws IOException {
		while (!tokenizer.hasMoreTokens()) {
			// TODO add check for eof if necessary
			tokenizer = new StringTokenizer(reader.readLine());
		}
		return tokenizer.nextToken();
	}
	static boolean hasNext()throws IOException {
		return tokenizer.hasMoreTokens();
	}
	static String nextLine() throws IOException{
		return reader.readLine();
	}
	static char nextChar() throws IOException{
		return next().charAt(0);
	}
	static int nextInt() throws IOException {
		return Integer.parseInt(next());
	}
	static float nextFloat() throws IOException {
		return Float.parseFloat(next());
	}
	static double nextDouble() throws IOException {
		return Double.parseDouble(next());
	}
}
public class Main { 

	public static void main(String[] args) throws IOException {
		Reader.init(System.in);
		int zushu = 0;
		while (true) {
			int n = Reader.nextInt();
			char[][]g = new char[n][n];
			int left = 0;
			int right = n-1;
			int level = n-1;
			while (left<=right) {
				if (level==n-1) {
					for (int i = left; i <= right; i++) {
						g[level][i] = '@';
					}
				}else {
					g[level][left] = '@';
					g[level][right] = '@';
					for (int i = left+1; i < right; i++) {
						g[level][i] = '~';
					}
				}
				level--;
				left++;
				right--;
			}
			if (zushu!=0) {
				System.out.println();
			}
			for (int i = level+1; i < g.length; i++) {
				for (int j = 0; j<= i; j++) {
					if ((int)g[i][j]==0) {
						System.out.print(" ");
					}else {
						System.out.print(g[i][j]);
					}
				}
				System.out.println();
			}
			zushu++;
		}
	}
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章