功能分解

时间:2013-11-18 14:45:19

标签: java decomposition

您好我已经写了一个程序来打印一个CS类的Diamond;我被要求使用函数分解(我认为全局变量?),我不知道如何做到这一点;一些见解会帮助我;我的代码不是很漂亮;但它完成了这项工作。

   public class SquareDiamondMid
 {
    public static void main(String args[]){
    System.out.println("printing Diamond");
    int number = BIO.getInt();
    int dotsTop = (number / 2) - 1;
    int count = 0;
    int LineN = 1;
    int DotsMiddle = 0;
    int mainCount = (number / 2)+1;
    int count1 = 0;
    int dot = (number / 2) - 1;

    while(count1<=dot){
        System.out.print(".");
        count1 = count1 + 1;
    }
    System.out.print("*");
    count1 = 0;
    while(count1<=dot){
        System.out.print(".");
        count1 = count1 + 1;
    }
    System.out.println(""); 

    while(mainCount<number){
        while(count<dotsTop){
            System.out.print(".");
            count++;
        }
        System.out.print("*");
        while(DotsMiddle<LineN){
            System.out.print(".");
            DotsMiddle++;
        }
        System.out.print("*");
        count = 0;
        while(count<dotsTop){
            System.out.print(".");
            count++;
        }
        System.out.println("");
        LineN = LineN + 2;
        DotsMiddle = 0;
        dotsTop--;
        mainCount++;
        count=0;
    }
    //bottom
    int bottomLineN=1;
    int numberOfBottom = (number / 2) - 2;
    int bottomCount = 0;
    int mainBottomCount=0;
    int bottomMidCount = 0;
    int bottomMidDot = number - 4;
    int bottomCount2 = 0;

    while(mainBottomCount<=numberOfBottom){

        while(bottomCount<bottomLineN){
            System.out.print(".");
            bottomCount++;
        }
        System.out.print("*");
        while(bottomMidCount<bottomMidDot){
            System.out.print(".");
            bottomMidCount++;
        }
        System.out.print("*");

        while(bottomCount2<bottomLineN){
            System.out.print(".");
            bottomCount2++;
        }

        bottomCount2 = 0;
        bottomMidCount = 0;
        bottomMidDot = bottomMidDot - 2;
        System.out.println("");
        mainBottomCount++;
        bottomCount=0;
        bottomLineN = bottomLineN + 1;
    }

    int count3=0;
    while(count3<=dot){
        System.out.print(".");
        count3 = count3 + 1;
    }
    System.out.print("*");
    count3 = 0;
    while(count3<=dot){
        System.out.print(".");
        count3 = count3 + 1;
    }
    System.out.println(""); 
}

提前致谢。

1 个答案:

答案 0 :(得分:2)

功能分解意味着将其分解为流程执行的许多不连续的步骤。

例如,制作一杯茶可能涉及:

  • 喝杯
  • 将袋泡茶放入杯中
  • 将水放入水壶
  • 烧水
  • 在装有茶袋的杯子中加水

这些步骤中的每一个都可以封装在一个函数中,这个函数需要一个输入(比如一个空杯子)并返回一个结果(一个带有茶袋的杯子)。

现在查看您的代码。它的表现是什么?它们是否可以表示为接受世界输入或初始状态的某些东西并做一些工作来产生输出?

打印出一些点可能有资格......需要什么输入?该功能需要用什么输入?