如何将一个变量添加到另一个已经设置的变量

我的作业是创建一个程序,它接受一个数字列表并打印出能被 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  

我真的不明白为什么要这样做,但在我看来我添加的变量是错误的。添加变量的作业页并没有具体说明如何相互添加变量。

有没有人有改进代码的提示,或者找到修复我的代码的方法?谢谢。


侃侃尔雅
浏览 136回答 3
3回答

ABOUTYOU

欢迎来到爪哇。首先你说你得到了输入,但那是输出。输入是您输入的内容,输出是您打印的内容。然后你的 for 循环中有一个错误。你在一个地方发生了太多事情。根据实现的逻辑,只要您输入的值不能被 4 整除,您的程序就会退出第一级 for 循环。如果您想了解更多信息,请继续阅读 for loops https://www.learnjavaonline.org/en/Loops。我建议改为从循环开始while。逻辑应该是这样的:1. 创建变量来保存正确答案saved2.创建另一个来保存从控制台读取的值iwhile3.有条件开始循环i = scanner.nextInt()3.1 检查刚刚输入的值是否i能被4整除3.2 如果是,则比较是否比之前保存的大(初始saved值为0)3.3 如果比较大,则将读取i到的值赋值给saved4. 在循环结束时,saved变量中将有可被 4 整除的最大数字。打印出来。

Helenr

根据我如何提问和回答家庭作业问题,我会提供一些帮助。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与输入相同,只要它是递增的。这些提示解释了意外的输出。如果您检查问题的详细信息,您应该能够改进您的编码尝试。

缥缈止盈

这就是我在您的代码中快速修复的方式。请注意,没有关于可能的最小值以及如何停止输入的陈述。因此,解决方案非常简单,它只读取输入,直到那里出现整数。这篇文章可能对处理来自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.    }}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java