public class Testing { public static void main(String[] args) {
for (int i = 1; i <= 7; i++) {
if (i <= 3) {
for (int j = 1; j <= 7; j++) {
if (j == i + 3 || j == 5 - i) {
System.out.print("*");
} else {
System.out.print(" ");
}
}
} else {
for (int k = 1; k <= 7; k++) {
if (k == i - 3 || k == 11 - i) {
System.out.print("*");
} else {
System.out.print(" ");
}
}
}
System.out.println();
} }}
for (int i = 1; i <= 7; i++) {
if (i <= 3) {
for (int j = 1; j <= 7; j++) {
if (j == i + 3 || j == 5 - i) {
System.out.print("*");
} else {
System.out.print(" ");
}
}
} else {
for (int k = 1; k <= 7; k++) {
if (k == i - 3 || k == 11 - i) {
System.out.print("*");
} else {
System.out.print(" ");
}
}
}
System.out.println();
} }}
:)
static int NUM = 14;
public static void main(String[] args){
int i;
int num = NUM/2;
for(i=0 ;i < NUM*NUM-NUM; ++i){
if((i+1) == ((i+1)/NUM)*NUM +num || (i+1) == ((i+1)/NUM)*NUM+NUM-num)
System.out.print("*");
else
System.out.print(" ");
if((i+1) % NUM == 0 && (i+1)/NUM < NUM/2){
num--;
System.out.println();
}
if((i+1) % NUM == 0 && (i+1)/NUM >= NUM/2){
num++;
System.out.println();
}
}
}
}
public class Testing {
static int NUM = 14;
public static void main(String[] args){
int i;
int num = NUM/2;
for(i=0 ;i < NUM*NUM-NUM; ++i){
if((i+1) == ((i+1)/NUM)*NUM +num || (i+1) == ((i+1)/NUM)*NUM+NUM-num)
System.out.print("*");
else
System.out.print(" ");
if((i+1) % NUM == 0 && (i+1)/NUM < NUM/2){
num--;
System.out.println();
}
if((i+1) % NUM == 0 && (i+1)/NUM >= NUM/2){
num++;
System.out.println();
}
}
}
}
public static void main(String[] args) {
System.out.println(" * ");
System.out.println(" * * ");
System.out.println(" * * ");
System.out.println("* *");
System.out.println("* *");
System.out.println(" * * ");
System.out.println(" * * ");
System.out.println(" * ");
}
}
public class Testing {
public static void main(String[] args){
for(int i=1;i<=7;i++){
if(i<=3){
for(int j=1;j<=7;j++){
if (j == i + 3 || j == 5 - i) {
System.out.print("*");
}else{
System.out.print(" ");
}
}
}
else{
for (int k = 1; k <= 7; k++) {
if (k == i - 3 || k == 11 - i) {
System.out.print("*");
}else{
System.out.print(" ");
}
}
}
System.out.println();
}
}}
对齐下,学习了...........
public static void main(String[] args) {
print(5);
}
public static void print(int n) {
if(n % 2 == 0) n ++;
int row = 0;
int r = 0;
int col = 0;
for(int i = 0; i < n * n ; i ++) { if(col == (n/2-r) || col == (n/2+r))
System.out.print("*");
else
System.out.print(" "); if(++col == n)
col = 0;
if(i + 1 == n * (row+1)) {
System.out.println();
row ++;
if(row <= n/2)
r ++;
else
r --;
}
}
}
public static void main(String[] args) {
int type=0;//0代表打印中部以上,1代表打印中部分,2代表打印下部分
int param=3;//param代表行数
int j=0;
label: for (int i=1; i<2*param-1; i+=2) {
switch (type) {
case 0:
j=0;
do{
System.out.print("*");
j++;
}while(j!=i);
System.out.println();
if(j==param){
type++;
i=0;
continue label;
}
break;
case 1:
j=0;
do{
System.out.print("*");
j++;
}while(j!=2*param-1);
System.out.println();
type++;
i=-1;
continue label;
case 2:
j=2*param-1;
do{
System.out.print("*");
j-=2;
}while(j!=(i*2-3));
System.out.println();
if(j==1)
break label;
default:
break;
}
}
}有兴趣的可以改下,写的差不多了
其实弄清楚菱形边与行数的函数关系其实并不难:
public static void main(String[] args) {
System.out.print("请输入菱形的半轴长(小于11个字符):"); try {
int n = new Scanner(System.in).nextInt(); if (n <= 0 || n > 10) {
System.out.println("输入数据无效!");
return;
} int num = 2 * n - 1;
for (int i = 0; i < 4 * n * n - 4 * n + 1; i++) {
int row = i / num + 1, col = i % num + 1; if (col == Math.abs(row - n) + 1
|| num - col == Math.abs(row - n))
System.out.print("*");
else
System.out.print(" "); if (col == num)
System.out.println();
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
另外,在C#下找出了个投机取巧的方法(Java下面还没发现这样的功能):
static void Main(string[] args)
{
int n;
string temp; Console.Write("请输入菱形的半轴长(小于11个字符):");
temp = Console.ReadLine(); if (!(int.TryParse(temp, out n)))
{
Console.WriteLine("输入数据至少是个数吧……");
return;
} if (n <= 0 || n > 10)
{
Console.WriteLine("输入数据无效!");
return;
} for (int i = 1; i <= 2 * n - 1; i++)
{
int num = Math.Abs(i - n); Console.Write(new string(' ', num) + '*'); if (num < n - 1)
Console.Write(new string(' ', 2 * (n - num - 1) - 1) + '*'); Console.WriteLine();
}
}
public static void main(String[] args) {
int type=0;//0代表打印中部以上,1代表打印中部分,2代表打印下部分
int param=1;//param代表行数
int j=0;
label: for (int i=1; i<=param; i++) {
switch (type) {
case 0:
j=1;
do{
if(j==param-i-(param/2-1) || j == param/2+i)
System.out.print("*");
else
System.out.print(" ");
j++;
}while(j!=param);
System.out.println();
if(i==param/2){
type++;
i=0;
continue label;
}
break;
case 1:
j=0;
do{
if(j==0 || j==param-1)
System.out.print("*");
else
System.out.print(" ");
j++;
}while(j!=param);
System.out.println();
type++;
i=param/2+1;
continue label;
case 2:
j=1;
do{
if (j == param+param/2 +1- i || j == i- param/2)
System.out.print("*");
else
System.out.print(" ");
j++;
}while(j!=param+1);
System.out.println();
if(i==param)
break label;
default:
break;
}
}
}
写了不能白写,自知不如38楼
public static void main(String[] args) throws Exception {
int size = 5;
if (size % 2 == 0) {
size++;
}
int p = size / 2;
for (int i = 0; i < 5; i++) {
byte[] tmp = new byte[size];
if (i <= p) {
tmp[p - i] = '*';
tmp[p + i] = '*';
} else {
tmp[p - (size - 1 - i)] = '*';
tmp[p + (size - 1 - i)] = '*';
}
System.out.println(new String(tmp));
}
}
int size = 10;
if (size % 2 == 0) {
size++;
}
int p = size / 2;
for (int i = 0; i < size; i++) {
byte[] tmp = new byte[size];
if (i <= p) {
tmp[p - i] = '*';
tmp[p + i] = '*';
} else {
tmp[p - (size - 1 - i)] = '*';
tmp[p + (size - 1 - i)] = '*';
}
System.out.println(new String(tmp));
}
}
{
public static void main(String[] args)
{
int num = 4;//行数等于num*2+1
for(int y = num;Math.abs(y)<num+1;y--)
{
for(int x=-num;Math.abs(x)<num+1;x++)
{
if(Math.abs(x)+Math.abs(y)==num)
{
System.out.print("*");
}
else
{
System.out.print(" ");
}
}
System.out.println();
}
}
}
{
public static void main(String[] args)
{
int num = 4; //行数等于num*2+1
for(int y = num;Math.abs(y)<num+1;y--)
{
for(int x=-num;Math.abs(x)<num+1;x++)
{
if(Math.abs(x)+Math.abs(y)==num)
{
System.out.print("*");
}
else
{
System.out.print(" ");
}
}
System.out.println();
}
}
}