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

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

如何將一個變量添加到另一個已經設置的變量

如何將一個變量添加到另一個已經設置的變量

侃侃爾雅 2023-03-23 13:37:39
我的作業是創建一個程序,它接受一個數字列表并打印出能被 4 整除的最大數字。列表看起來像這樣:12  16  87  58  25  73  86  36  79  40  12  89  32  輸入應為:40,因為它是可被 4 整除的最大數字。這是我的代碼:import java.util.Scanner;public class Main {    public static void main(String[] args) {        Scanner scanner = new Scanner(System.in);        int saved = 0;        int saved2 = 0;        for (int i = scanner.nextInt(); i % 4 == 0; i = scanner.nextInt()) {            for (boolean bull = true; bull == true; bull ^= true) {                if (i > saved) {                    saved -= saved2;                    saved += i;                    saved2 += i;                }            }            System.out.println(saved);        }    }}我的代碼的輸入是12  16  我真的不明白為什么要這樣做,但在我看來我添加的變量是錯誤的。添加變量的作業頁并沒有具體說明如何相互添加變量。有沒有人有改進代碼的提示,或者找到修復我的代碼的方法?謝謝。
查看完整描述

3 回答

?
ABOUTYOU

TA貢獻1812條經驗 獲得超5個贊

歡迎來到爪哇。

首先你說你得到了輸入,但那是輸出。輸入是您輸入的內容,輸出是您打印的內容。

然后你的 for 循環中有一個錯誤。你在一個地方發生了太多事情。根據實現的邏輯,只要您輸入的值不能被 4 整除,您的程序就會退出第一級 for 循環。


如果您想了解更多信息,請繼續閱讀 for loops https://www.learnjavaonline.org/en/Loops。

我建議改為從循環開始while。邏輯應該是這樣的:

1. 創建變量來保存正確答案saved

2.創建另一個來保存從控制臺讀取的值i

while3.有條件開始循環i = scanner.nextInt()

3.1 檢查剛剛輸入的值是否i能被4整除

3.2 如果是,則比較是否比之前保存的大(初始saved值為0)

3.3 如果比較大,則將讀取i到的值賦值給saved

4. 在循環結束時,saved變量中將有可被 4 整除的最大數字。打印出來。


查看完整回答
反對 回復 2023-03-23
?
Helenr

TA貢獻1780條經驗 獲得超4個贊

根據
我如何提問和回答家庭作業問題,我會提供一些幫助。

for (int i = scanner.nextInt(); i % 4 == 0;i = scanner.nextInt())

只要所有輸入都可以被 4 整除,這只會讀取,這就是它以 16 結尾的原因,因為 87 不能被 4 整除。

for (boolean bull = true; bull == true ;bull ^= true)

這需要你的解釋,但我很確定它無條件地只執行一次內部循環體。true(不是 100% 確定,因為和的表示false在您的機器中可能很奇怪。如果 0 是 的表示true,即真的很奇怪,那么它是一個無限循環,與您描述的輸出不匹配......)

System.out.println(saved);

這對每個輸入只執行一次,除了最后一個,它不是 4 的倍數。

的值saved與輸入相同,只要它是遞增的。

這些提示解釋了意外的輸出。
如果您檢查問題的詳細信息,您應該能夠改進您的編碼嘗試。


查看完整回答
反對 回復 2023-03-23
?
縹緲止盈

TA貢獻2041條經驗 獲得超4個贊

這就是我在您的代碼中快速修復的方式。請注意,沒有關于可能的最小值以及如何停止輸入的陳述。因此,解決方案非常簡單,它只讀取輸入,直到那里出現整數。

這篇文章可能對處理來自Scanner.

我希望代碼中的注釋會有所幫助。如果有任何問題,請添加評論。祝你好運!

import java.util.Scanner;


public class Main {

    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);


        int currentMax = Integer.MIN_VALUE; // you may set negative or 0 if you know that all the input is positive

//      int saved2 = 0; // no need for this variable


        while (scanner.hasNextInt()) { // you can make a better input handling, especially if you know when it should end the input. Now it will end on any non-integer input line

            int i = scanner.nextInt();


            //      for (int i = scanner.nextInt(); i % 4 == 0; i = scanner.nextInt()) {

//          for (boolean bull = true; bull == true; bull ^= true) {

                if (((i % 4) == 0) && (i > currentMax)) {

                    currentMax = i;

//                  saved -= saved2;

//                  saved += i;

//                  saved2 += i;

//              }

            }

        }


        System.out.println(currentMax); // moved out of "for" or "while" cycles. Print the value after the input has ended.

    }

}


查看完整回答
反對 回復 2023-03-23
  • 3 回答
  • 0 關注
  • 184 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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