为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

侃侃尔雅 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条经验 获得超3个赞

根据
我如何提问和回答家庭作业问题,我会提供一些帮助。

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 关注
  • 135 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信