2017-02-15 54 views
0

我已经创建了如下所示的mitsubishi徽标生成器。它从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(); 
     } 
    } 
} 

}

+2

被替换为http://codereview.stackexchange.com/ – vesan

+1

我投票关闭这一问题作为题外话,因为它是代码审查,这可能是更适合。应该在http://codereview.stackexchange.com而不是 – ochi

+0

我投票结束这个问题作为题外话,因为它是代码审查。应该在codereview.stackexchange.com代替 – VedX

回答

0

你在代码中使用很多次:

 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); 
     }