【问题标题】:Cleaning up code with methods用方法清理代码
【发布时间】:2017-02-15 04:25:10
【问题描述】:

我创建了一个三菱徽标生成器,如下所示。它从logo.txt 文件中获取输入,并使用这些ints/chars 来创建logo.txt 文件中标识的许多徽标。我只是觉得我的代码非常重复,我想把它清理成单独的方法而不是一遍又一遍地重复,有没有关于如何清理它的建议?我将不胜感激任何和所有的反馈。甚至只是一个起点。提前谢谢你。

public static void main(String[] args) {

    Scanner input = new Scanner(System.in);

    try {
        input = new Scanner(new FileInputStream("config.txt"));
        //initialize ithe variable's input and output
    } catch (FileNotFoundException e) {
        System.out.println("File not found.");
        System.exit(0);

    }

    int size = Integer.parseInt(inputStream.nextLine());
    int numLogos = Integer.parseInt(inputStream.nextLine());
    char letter1 =  inputStream.next().charAt(0);
    char letter2 =  inputStream.next().charAt(0); 

    for(int bee = numLogos; bee > 0; bee--){ 
        for(int y = 0; y < size; y++) { 

            for(int x = 0; x < y; x++) {
                System.out.print(letter2);
            }
            for(int x = 0; x < size - y; x++) {
                System.out.print(letter2);
            }
            for(int x = 0; x < y; x++) {
                System.out.print(letter2);
            }
            for(int x = 0; x < size - y; x++) {
                System.out.print(letter2);
            }

            for(int x = size; x > y; x--) {
                System.out.print(letter2);
            }
            for(int x = 0; x < y; x++) {
                System.out.print(letter1);
            }
            for(int x = 0; x < y; x++) {
                System.out.print(letter1);
            }
            for(int x = size; x > y; x--) {
                System.out.print(letter2);
            }

            for(int x = 0; x < y; x++) {
                System.out.print(letter2);
            }
            for(int x = 0; x < size - y; x++) {
                System.out.print(letter2);
            }
            for(int x = 0; x < y; x++) {
                System.out.print(letter2);
            }
            for(int x = 0; x < size - y; x++) {
                System.out.print(letter2);
            }
            System.out.println();
        }           
        for(int y = 0; y < size; y++) {
            for(int x = 0; x < y; x++) {
                System.out.print(letter2);
            }
            for(int x = 0; x < size - y; x++) {
                System.out.print(letter2);
            }
            for(int x = 0; x < y; x++) {
                System.out.print(letter2);
            }
            for(int x = 0; x < size - y; x++) {
                System.out.print(letter2);
            }

            for(int x = 0; x < y; x++) {
                System.out.print(letter2);
            }            
            for(int x = 0; x < size - y; x++) {
                System.out.print(letter1);
            }
            for(int x = 0; x < size - y; x++) {
                System.out.print(letter1);
            }
            for(int x = 0; x < y; x++) {
                System.out.print(letter2);
            }

            for(int x = 0; x < y; x++) {
                System.out.print(letter2);
            }
            for(int x = 0; x < size - y; x++) {
                System.out.print(letter2);
            }
            for(int x = 0; x < y; x++) {
                System.out.print(letter2);
            }
            for(int x = 0; x < size - y; x++) {
                System.out.print(letter2);
            }
            System.out.println();
        }
        for(int y = 0; y < size; y++) {
            for(int x = size; x > y; x--) {
                System.out.print(letter2);
            }
            for(int x = 0; x < y; x++) {
                System.out.print(letter1);
            }

            for(int x = 0; x < y; x++) {
                System.out.print(letter1);
            }
            for(int x = 0; x < size - y; x++) {
                System.out.print(letter1);
            }

            for(int x = size; x > y; x--) {
                System.out.print(letter1);
            }
            for(int x = 0; x < y; x++) {
                System.out.print(letter2);
            }

            for(int x = 0; x < y; x++) {
                System.out.print(letter2);
            }            
            for(int x = 0; x < size - y; x++) {
                System.out.print(letter1);
            }

            for(int x = 0; x < y; x++) {
                System.out.print(letter1);
            }
            for(int x = 0; x < size - y; x++) {
                System.out.print(letter1);
            }

            for(int x = 0; x < y; x++) {
                System.out.print(letter1);
            }
            for(int x = size; x > y; x--) {
                System.out.print(letter2);
            }
            System.out.println();
        }
    }
}

}

【问题讨论】:

标签: java for-loop methods repeat


【解决方案1】:

你在代码中多次使用这个:

        for(int x = 0; x < y; x++) {
            System.out.print(letter2);
        }
        for(int x = 0; x < size - y; x++) {
            System.out.print(letter2);
        }
        for(int x = 0; x < y; x++) {
            System.out.print(letter2);
        }
        for(int x = 0; x < size - y; x++) {
            System.out.print(letter2);
        }

可以换成

        for(int x = 0; x < 2*size; x++) {
            System.out.print(letter2);
        }

还有,这个:

        for(int x = 0; x < size - y; x++) {
            System.out.print(letter1);
        }
        for(int x = 0; x < size - y; x++) {
            System.out.print(letter1);
        }

可以替换为

        for(int x = 0; x < 2*(size - y); x++) {
            System.out.print(letter1);
        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-13
    • 2012-05-21
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 2010-11-22
    相关资源
    最近更新 更多