-
在建立一个数组时还是要注意数组的大小,在引用数组的ASCII码时,要在数组前加(char) 如此题中(char)(chars[i-1]+1)
//重要:!!!!!!!!!!!!!! chars[0]='A'; System.out.println(sn[0]+1); //66 ASCII值 System.out.println((char)(sn[0]+1)); //B 在ASCII值是66的字符串
-
我的代码
package basic;
import java.util.Scanner;
public class _3characterShape {
/**
* @param args
*/
public static void main(String[] args) {
char[] chars=new char[26];
chars[0]='A';
for(int i=1;i<26;i++)
{
chars[i]=(char) (chars[i-1]+1);
}
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int m=sc.nextInt();
//输出
for(int i=0,j=0;i<n && j<m;j++,i++){
if(0==j){
for(int p=0;p<m;p++){
System.out.print(chars[p]);
}
System.out.println();
}
else{
for(int q=j;q>=1;q--){
System.out.print(chars[q]);
}
for(int k=0;k<=m-1-j;k++){
System.out.print(chars[k]);
}
System.out.println();
}
}
}
}
代码不够完善,当输入 6 2 时,
输出
AB
BA
但是应输出
AB
BA
CB
DC
ED
FE
目前还不知如何改进
3.正确的代码
(1)这道题的算法并不难,用到了 Math.abs()函数,这个函数是取一个数的绝对值。
(2)在建立一个数组时还是要注意数组的大小,在引用数组的ASCII码时,要在数组前加(char) 如此题中(char)(sn[i-1]+1)
具体请查看JAVA蓝桥杯字母图形
char sn[]=new char [30];
int i,j;
Scanner reader=new Scanner(System.in);
int num1=reader.nextInt();
int num2=reader.nextInt();
//重要:!!!!!!!!!!!!!!
sn[0]='A';
//System.out.println(sn[0]+1); 66
//System.out.println((char)(sn[0]+1)); B
for(i=1;i<26;i++)
{
sn[i]=(char) (sn[i-1]+1);
}
for(i=0;i<num1;i++) {
for(j=0;j<num2;j++) {
System.out.print(sn[Math.abs(j-i)]);
}
System.out.printf("\n");
}