我想創建的使用4個字母的所有可能的兩個字母的單詞的列表 - A,C,T,G。所以輸出應該像如何在java中動態檢查條件?
兩個字母的單詞輸出
AA
CA
TA
GA
AC
CC
TC
GC
AT
CT
TT
GT
AG
CG
TG
GG
我能夠生產使用這種Java代碼
兩個字母的單詞Java代碼
import java.io.IOException;
class Variations {
private static char replace (char bc) {
switch (bc) {
case 'A':
bc = 'C';
break;
case 'C':
bc = 'T';
break;
case 'T':
bc = 'G';
break;
case 'G':
bc = 'A';
break;
}
return bc;
}
public static void main(final String[] args) throws IOException {
String code = "AA";
char[] bc = new char[code.length()];
for (int i=0; i<code.length(); i++) {
bc[i] = code.charAt(i);
}
for (int i=0; i < Math.pow(4, bc.length); i++) {
System.out.println(bc);
bc[0] = replace(bc[0]);
if (i%4 == 0) {
bc[1] = replace(bc[1]);
}
}
}
}
上面的輸出
現在我想創建使用相同的4個字母的所有可能的三個字母的單詞的列表 - A,C,T,G。所以輸出會像
三個字母的單詞輸出
AAA
CAA
TAA
GAA
ACA
CCA
TCA
GCA
ATA
CTA
TTA
GTA
AGA
CGA
TGA
GGA
AAC
CAC
TAC
GAC
ACC
CCC
TCC
GCC
ATC
CTC
TTC
GTC
AGC
CGC
TGC
GGC
AAT
CAT
TAT
GAT
ACT
CCT
TCT
GCT
ATT
CTT
TTT
GTT
AGT
CGT
TGT
GGT
AAG
CAG
TAG
GAG
ACG
CCG
TCG
GCG
ATG
CTG
TTG
GTG
AGG
CGG
TGG
GGG
所以產生這種上面的輸出,我只需要添加一個更if
聲明,我的主要方法,
三個字母的單詞Java代碼
import java.io.IOException;
class Variations {
private static char replace (char bc) {
switch (bc) {
case 'A':
bc = 'C';
break;
case 'C':
bc = 'T';
break;
case 'T':
bc = 'G';
break;
case 'G':
bc = 'A';
break;
}
return bc;
}
public static void main(final String[] args) throws IOException {
String code = "AAA";
char[] bc = new char[code.length()];
for (int i=0; i<code.length(); i++) {
bc[i] = code.charAt(i);
}
for (int i=0; i < Math.pow(4, bc.length); i++) {
System.out.println(bc);
bc[0] = replace(bc[0]);
if (i%4 == 0) {
bc[1] = replace(bc[1]);
}
if (i%16 == 0) {
bc[2] = replace(bc[2]);
}
}
}
}
所以我的問題是,如果用戶可以選擇指定他/她是否想要所有雙字母單詞或三字母單詞的列表 - 我該如何將兩個程序結合起來?這兩種方案只因一個條件陳述而異。
用戶可以指定他/她是否需要所有可能的2字母單詞或3字母單詞或甚至4個字母單詞的列表。我的程序必須動態添加或刪除條件語句才能生成列表。是否有可能在Java中做到這一點?
預先感謝您!
您應該重新設計您的算法以獲取參數,'n'指定序列長度。同時要小心'Math.pow'會產生'double's,這可能會導致'2^53'上的舍入錯誤。 – AlexR
您的問題是您當前的代碼使用兩種「不同的方式」解決*相同*問題。 – GhostCat