我做了這個程式來計算一組數字
public void himpunanIrisan(){
System.out.print("The Result is {");
for(int k=1; k<=setofB; k ){
boolean Sama = false;
for(int i=1; i<=setofA; i ){
if(numberB[k] == numberA[i]){
Sama = true;
}
} if (Sama==true){
System.out.print(numberB[k] ",");
}
} System.out.println("}");
}
并且輸出將顯示如下
The Result is {1,2,}
有沒有辦法讓另一個逗號消失?
uj5u.com熱心網友回復:
改變這一行:
System.out.print(numberB[k] ",");
這應該作業。
System.out.print(numberB[k] (k < setofB ? "," : ""));
uj5u.com熱心網友回復:
使用加入收集器會更容易,并幫助您避免重新發明輪子。此外,將陣列轉換為Sets 會比兩個陣列上的嵌套回圈執行得更好(O(m n) 而不是 O(m*n),其中 m 和 n 是兩個陣列的大小):
Set<Integer> setB = stream(numberB).boxed().collect(Collectors.toSet());
System.out.println(
Arrays.stream(numberA)
.boxed()
.filter(setB::contains)
.map(Object::toString)
.collect(Collectors.joining(",", "{", "}"))
);
uj5u.com熱心網友回復:
來自如何洗掉 System.out.println() 列印到控制臺的內容的想法?
您可以使用
System.out.print("\b");
要從 STDOUT 中洗掉“,”字符(有關如何使其在 Eclipse 中作業,請參見鏈接)。或者您可以將代碼更改為如下所示:
public void himpunanIrisan(){
boolean isFirst = true;
System.out.print("The Result is {");
for(int k=1; k<=setofB; k ){
boolean Sama = false;
for(int i=1; i<=setofA; i ){
if(numberB[k] == numberA[i]){
Sama = true;
}
}
if (Sama==true){
if(isFirst) {
System.out.print(numberB[k]);
isFirst = false;
} else {
System.out.print("," numberB[k]);
}
}
} System.out.println("}");
}
uj5u.com熱心網友回復:
StringJoiner對于這種情況,這真的很方便。
public void himpunanIrisan(){
StringJoiner joiner = new StringJoiner(",");
for(int k=1; k<=setofB; k ){
boolean sama = false;
for(int i=1; i<=setofA; i ){
if(numberB[k] == numberA[i]) sama = true;
}
if(sama) joiner.add(numberB[k]);
}
System.out.printf("The Result is {%s}", joiner.toString());
}
在輸出的末尾不會有任何額外的逗號。
uj5u.com熱心網友回復:
我假設您只是一個初學者并試圖學習這就是我嘗試使用基本級別解決方案的原因。
public void himpunanIrisan(){
int[] numberB = {0,1,2,3,4};
int setofB = numberB.length-1;
int[] numberA = {0,1,2,5,6};
int setofA = numberA.length-1;
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("The Result is {");
boolean initParam = true;
for(int k=1; k<=setofB; k ){
boolean Sama = false;
for(int i=1; i<=setofA; i ){
if(numberB[k] == numberA[i]){
Sama = true;
}
} if (Sama && initParam){
initParam = false;
stringBuilder.append(numberB[k]);
} else if(Sama) {
stringBuilder.append(",");
stringBuilder.append(numberB[k]);
}
}
stringBuilder.append("}");
System.out.println(stringBuilder);
}
}
結果是 {1,2}
uj5u.com熱心網友回復:
洗掉最后兩個列印并將此* 列印添加到 seccond for 回圈:
System.out.println( numberB[k] (k<setofB ? "," : " }"));
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/336680.html
上一篇:從物件中的陣列中提取所需的數字
下一篇:for回圈創建額外的陣列作為回報
