2015-04-19 137 views
1

我正在創建一個非常簡單的編碼器,用於將字符串中的字符進行混洗。我寫了它把這個字符串分成兩半,形成了兩個新的變量。用戶選擇他們想要的shuffle數量,並將其作爲新類構造函數中的參數傳遞 - 然後應該在整個類中使用該shuffle值。我的不是。相反,shuffleEncryption方法使用類變量0。我知道這肯定是非常明顯的,但我沒有抓住它。 :/構造函數參數值未實現

//從主類

 System.out.println("Enter message to encrypt: "); 
     String message = input.next(); 
     System.out.print("Number of shuffles: "); 
     int numShuffles = input.nextInt(); 
     ShuffleCipher shuffle = new ShuffleCipher(numShuffles); 
     System.out.println(shuffle.encode(message)); 

//洗牌類

public class ShuffleCipher implements MessageEncoder { 
int shuffle; 

public ShuffleCipher(int shuffle) { 
    shuffle = this.shuffle;  
} 

private String shuffleEncryption(String str) { 
    int middle = str.length()/2; 
    int loop = 1; 
    System.out.println("shift" + shuffle); 
    StringBuilder sb = new StringBuilder(); 

    do { 
     String firstHalf = str.substring(0, middle); 
     System.out.println("first:" + firstHalf); 
     String secondHalf = str.substring(middle); 
     System.out.println("second:" + secondHalf); 

     for(int i = 0, j = 0; i < firstHalf.length(); i++, j++) { 
      sb = sb.append(secondHalf.charAt(i)); 

      if(j < secondHalf.length()) { 
      sb = sb.append(firstHalf.charAt(i));   
     } 
     str = sb.toString(); 
    } 
    loop++; 
    } while (loop <= shuffle); 

    return str; 
} 

@Override 
public String encode(String plainText) { 
    String shuffled; 
    shuffled = shuffleEncryption(plainText); 
    return shuffled; 
} 
} 

回答

1

你是不是設置在構造函數中shuffle成員變量。

更改此設置: -

public ShuffleCipher(int shuffle) { 
    shuffle = this.shuffle;  
} 

這樣: -

public ShuffleCipher(int shuffle) { 
    this.shuffle = shuffle;  
} 
+0

謝謝Jabbslad,我知道它要的東西很微妙。認爲是休息時間了。 ;) – wellington