亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何將多個for循環構造成一個if語句?

如何將多個for循環構造成一個if語句?

慕田峪9158850 2022-12-15 14:42:58
我正在嘗試用 Java 中的數字數組和 3 個 for 循環解決問題。它涉及計算出數組中的哪 3 個數字加起來等于一個特定的總和。對于這個測試,我使用了 9 的總和。int nums[] = {1, 3, 5, 7, 9, 11, 13, 15};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)                System.out.print(i + " " + j + " " + y);}正確答案是 3 3 3 但此輸出為:0 0 30 1 20 2 10 3 01 0 21 1 11 2 02 0 12 1 03 0 0我知道我可能完全錯誤地嵌套了 for 循環,但我不知道在不刪除 if 語句范圍內的變量之一的情況下將代碼塊放在哪里。謝謝你的幫助。
查看完整描述

3 回答

?
UYOU

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 


查看完整回答
反對 回復 2022-12-15
?
慕容3067478

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 。



查看完整回答
反對 回復 2022-12-15
?
LEATH

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


查看完整回答
反對 回復 2022-12-15
  • 3 回答
  • 0 關注
  • 124 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號