A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© 201314 中级黑马   /  2016-12-1 23:16  /  1310 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我又做得哪里不对了,最右边的总是不对,哪个空格和心形曲线有什么关系吗?


private static void heartTwoWithXK(int r, double size, String center, String left, String right) {
  // TODO Auto-generated method stub
  
  size=1/(1.5*r*size);
  StringBuilder sb=new StringBuilder();
  //从上到下每一行都添加换行
  for (int y = r; y >=-r; y--,sb.append("\n"))
   
   
   
   //开始操作列
   for(int x=-2*r;x<=4*r;x++)
   {
   
    //画左边的心形
    boolean isLeft=inHeart(size,x,y+3);
    //画右边的心形
    boolean isRight=inHeart(size,x-25,y);
   
    //双空格
   
    String req=null;
    String w="";
   
    if(isLeft&&isRight)
     req=center;
    else if(isLeft)
     req=left;
    else if(isRight)
     req=right;
   
   
    //打印上下两行心形
    else if((y==-r||y==r))
    {
     
     if(x<3*r-7)
     {     
                    req="♥";
          w="  ";//双空格
     }     
    }
   
   
    else if(x==4*r||x==-2*r||line(x,y+3))req="♥";
   
    if(req!=null)sb.append((req+req).charAt((x-y)%req.length()+req.length())+w);
   
    else sb.append("   ");//双空格
   
   }
   
  
  
   System.out.println(sb.toString());
  
  
   
  
  }
  
private static boolean line(int x, int y) {
  return 4*y-x==0;
}
//

private static boolean inHeart(double size, int x, int y) {
  // TODO Auto-generated method stub
  return Math.pow(Math.pow(x*size,2)+Math.pow(y*2*size,2)-1,3)-Math.pow(x*size,2)*Math.pow(y*2*size, 3)<=0;
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马