3 回答

TA貢獻1878條經驗 獲得超4個贊
您的代碼中的一些問題
您正在打印索引
System.out.print(i + " " + j + " " + y);
而不是要打印數字。您想使用
println
換行打印所有內容您不應該多次從列表中取出一個項目,每個內部循環都應該忽略外部循環已經考慮過的元素
3,3,3 不是答案,因為它包含重復的元素,答案應該是包含不同元素的答案,即
1,3,5
更新后的代碼將是
for (int i = 0; i <= 7; i++) {
for (int j = i+1; j <= 7; j++)
for (int y = j+1; y <= 7; y++)
if( nums[i] + nums[j] + nums[y] == 9)
//Print the numbers on newline
System.out.println(nums[i] + " " +nums[j] + " " + nums[y]);
}
輸出將是
1 3 5
如果允許重復,則所有 3 個循環將從 0 開始運行,并且答案會改變
for (int i = 0; i <= 7; i++) {
for (int j = 0; j <= 7; j++)
for (int y = 0; y <= 7; y++)
if( nums[i] + nums[j] + nums[y] == 9)
//Print the numbers on newline
System.out.println(nums[i] + " " +nums[j] + " " + nums[y]);
}
答案將是
1 1 7
1 3 5
1 5 3
1 7 1
3 1 5
3 3 3
3 5 1
5 1 3
5 3 1
7 1 1

TA貢獻1773條經驗 獲得超3個贊
您多次測試相同的值,即 1+1+7、1+7+1、7+1+1 都在測試中。使用for for (int j = i; j <= 7; j++)
和for (int y = j; y <= 7; y++)
。請注意,如果您允許多次使用值,則有多個答案,而不僅僅是 3 3 3 。

TA貢獻1936條經驗 獲得超7個贊
正確答案是 3 3 3 但此輸出為:
不,正確答案肯定不是3 3 3,所以如果我沒記錯的話,你想找到一個總和等于你的測試總和的三元組,在這種情況下是 9,所以正確答案是 1,3,5 試試這個:
for (int i = 0; i <= 7; i++) {
for (int j = i + 1; j <= 7; j++)
for (int y = j + 1; y <= 7; y++)
if (nums[i] + nums[j] + nums[y] == 9)
System.out.print(nums[i] + " " + nums[j] + " " + nums[y]);
}
運行示例:https ://ideone.com/5UAuGv
添加回答
舉報