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