遇到一个很纠结的问题

yongod 2013-06-18 03:41:24
import java.util.*;
class temp
{


public static void main(String []args)
{
Scanner sc=new Scanner(System.in);

int count=sc.nextInt();

int b=1;
for (int i=1; i<=count; i++)
{
if (!(i%2==0))
{
for (int j=count/2+1;j>b;j--)//j=count/2+1
{
System.out.print(" ");
}
}

for (int y=1; y<=i; y++)
{
if (!(i%2==0))
{
System.out.print("*");
}
}

if (!(i%2==0))
{
System.out.println();
b++;
}
}
int a=1;
for (int i=count-2; i>0; i--)
{
if (!(i%2==0))
{
for (int j=0; j<a; j++)
{
System.out.print(" ");
}
}

for (int y=i; y>0; y--)
{
if (!(i%2==0))
{
System.out.print("*");
}
}
if (!(i%2==0))
{

System.out.println();
a++;
}
}
}
}


关于打印 菱形的
就是在我注释那里
如果count是偶数 用count/2 正好 如果是奇数就少一个" "
如果coutt是奇数 用count/2+1正好 偶数就多一个" "
好纠结啊..
...全文
193 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jobernowl 2013-06-19
  • 打赏
  • 举报
回复

public class Main {
	public static void main(String[] args) {
		printDiamond(6);
	}
	
	public static void printDiamond(int edge){
		String star = "*";
		int i = 0;
		for(;i<edge-1;i++){
			System.out.print(" ");
		}
		i=0;
		for(;i<edge;i++){
			System.out.print(star);
		}
		System.out.println();
		int space1 = edge-1;
		int space2 = space1+edge-2;
		i=0;
		int j;
		for(;i<edge-2;i++){
			j = 0;
			for(;j<space2;j++){
				if(j==space1-1){
					System.out.print(star);
				}else{
					System.out.print(" ");
				}
			}
			System.out.print(star);
			System.out.println();
			space1--;
			space2--;
		}
		i=0;
		for(;i<edge;i++){
			System.out.print(star);
		}
	}

}
写了一个万能的方法给你 参数的意思是边长 虽然打印出来看上去不像菱形 但是如果按“*”的数量来算长度的话那就是菱形
摆烂办不到 2013-06-19
  • 打赏
  • 举报
回复
引用 1 楼 kellotao 的回复:
这是打印菱形的?什么乱七八糟的算法。。
咱们当新手的时候不也是这样的吗?
zhangxm2015 2013-06-18
  • 打赏
  • 举报
回复
引用 3 楼 u010062569 的回复:
[quote=引用 1 楼 kellotao 的回复:] 这是打印菱形的?什么乱七八糟的算法。。
[/quote] 这个问题和你上一个一样。只不过是在倒叙输出罢了
import java.util.Scanner;

public class B
{
	public static void main(String[] args)
	{
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		for(int i = 1;i <= n;i++)
		{
			for(int j = n - i;j >= 0;j--)
			{
				System.out.print(" ");
			}
			for(int j = 1;j <= (2 * i - 1);j++)
				System.out.print("*");
			System.out.println();
		}
		
		for(int i = n -1;i > 0;i--)
		{
			for(int j = n - i;j >= 0;j--)
			{
				System.out.print(" ");
			}
			for(int j = 1;j <= (2 * i - 1);j++)
				System.out.print("*");
			System.out.println();
		}
	}
}
yongod 2013-06-18
  • 打赏
  • 举报
回复
引用 1 楼 kellotao 的回复:
这是打印菱形的?什么乱七八糟的算法。。
huadis 2013-06-18
  • 打赏
  • 举报
回复
	private int len=3;
	public void printRhombus(){
		if(len%2==0) --len;
		for (int i =len/2; i >=-len/2; i--) {
			System.out.print(repeatStr(" ", Math.abs(i)));
			System.out.print(repeatStr("*", len-Math.abs(i)*2));
			System.out.println(repeatStr(" ", Math.abs(i)));
		}
	}
	public String repeatStr(String str,int repeatCount){
		if(str==null || str.length()==0 || repeatCount<=0) return "";
		StringBuffer buf=new StringBuffer();
		for (int i = 0; i < repeatCount; i++)  buf.append(str);
		return buf.toString();
	}
kellotao 2013-06-18
  • 打赏
  • 举报
回复
这是打印菱形的?什么乱七八糟的算法。。

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧