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
添加回答
举报