2017-02-15 16 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); 
     }