我对编码很陌生,如果我的问题很愚蠢,我很抱歉。我的老师要求我编写一个 java 程序,它将显示字符“a”、“b”、“c”、“d”到字符串中的所有可能组合,但遵循以下规则:
我开始编写一个程序,但我被难住了。 方法“method1”不完整,我尝试使用 ArrayLists 但无法让它工作。
public class TN33
{ public TN33(char[] c)
{
for(int i = 0; i < c.length; i++) {
for(int j = 0; j < c.length; j++) {
for(int k = 0; k < c.length; k++) {
for(int l = 0; l < c.length; l++) {
final String str =(c[i]+""+c[j]+""+c[k]+""+c[l]);
method1(str);
}
}
}
}
}
public String method1(String x) {
System.out.println(x);
return x ;
}
public static void main(String[] args) {
char[] c = {'a', 'b', 'c', 'd'};
TN33 m1 = new TN33(c);
}
}
就计算排列而言,您的代码是正确的。
您只需要在创建 String 之前检查这些值。
这是一个例子。
需要注意的是,如果该值未出现,则 String#indexOf 方法将返回 −1,因此我们应该期望得到负乘积。
List<String> list = new ArrayList<>();
String s;
char w, x, y, z;
for (w = 'a'; w <= 'z'; w++)
for (x = 'a'; x <= 'z'; x++)
for (y = 'a'; y <= 'z'; y++)
for (z = 'a'; z <= 'z'; z++) {
s = "%s%s%s%s".formatted(w, x, y, z);
if (s.indexOf('a') * s.indexOf('d') >= 0) continue;
if (w == 'b' && x != 'a') continue;
if (x == 'b' && y != 'a') continue;
if (y == 'b' && z != 'a') continue;
if (z == 'b') continue;
list.add(s);
}
输出
baaa baac baae baaf baag baah baai baaj baak baal baam baan baao baap baaq
baar baas baat baau baav baaw baax baay baaz baba baca bacc bace bacf bacg
bach baci bacj back bacl bacm bacn baco bacp bacq bacr bacs bact bacu bacv
bacw bacx bacy bacz baea baec baee baef baeg baeh baei baej baek bael baem
baen baeo baep baeq baer baes baet baeu baev baew baex baey baez bafa bafc
bafe baff bafg bafh bafi bafj bafk bafl bafm bafn bafo bafp bafq bafr bafs
baft bafu bafv bafw bafx bafy bafz baga bagc bage bagf bagg bagh bagi bagj
bagk bagl bagm bagn bago bagp bagq bagr bags bagt bagu bagv bagw bagx bagy
bagz baha bahc bahe bahf bahg bahh bahi bahj bahk bahl bahm bahn baho bahp
bahq bahr bahs baht bahu bahv bahw bahx bahy bahz baia baic baie baif baig
...
zydw zydx zydy zydz zyea zyed zyfa zyfd zyga zygd zyha zyhd zyia zyid zyja
zyjd zyka zykd zyla zyld zyma zymd zyna zynd zyoa zyod zypa zypd zyqa zyqd
zyra zyrd zysa zysd zyta zytd zyua zyud zyva zyvd zywa zywd zyxa zyxd zyya
zyyd zyza zyzd zzaa zzac zzae zzaf zzag zzah zzai zzaj zzak zzal zzam zzan
zzao zzap zzaq zzar zzas zzat zzau zzav zzaw zzax zzay zzaz zzba zzca zzcd
zzdc zzdd zzde zzdf zzdg zzdh zzdi zzdj zzdk zzdl zzdm zzdn zzdo zzdp zzdq
zzdr zzds zzdt zzdu zzdv zzdw zzdx zzdy zzdz zzea zzed zzfa zzfd zzga zzgd
zzha zzhd zzia zzid zzja zzjd zzka zzkd zzla zzld zzma zzmd zzna zznd zzoa
zzod zzpa zzpd zzqa zzqd zzra zzrd zzsa zzsd zzta zztd zzua zzud zzva zzvd
zzwa zzwd zzxa zzxd zzya zzyd zzza zzzd