当前位置: 首页 > 知识库问答 >
问题:

为什么这个代码输出零而不是最大的差异(这是7,因为它是后续值之间的最大差异,而不是所有值)?

穆阳嘉
2023-03-14
import java.util.Scanner;
import java.lang.Math;

public class LabProgram {
   public static void main(String[] args) {
      Scanner scnr = new Scanner(System.in);

      int counter = scnr.nextInt();
      int maxDiff = 0;
      int next = 0;
  
      for (int i = 0; i < counter; i++) {
          int last = scnr.nextInt();
     
         if (i == 0) {
            continue;
         }
     
         int difference = Math.abs(last - next);
     
         if (maxDiff > difference) {
            maxDiff = difference;
         }
     
         last = next;
      }
  
      System.out.println(maxDiff);
  
   }
}

这是我的代码,当它应该输出7时,它输出0。非常感谢您在这里提供的任何帮助(我必须使用continue和for语句,不允许使用while语句作为必需品)。

共有1个答案

松铭
2023-03-14

你必须指定next=last。因为next(0)的值总是被分配给last,所以只有你总是得到零

 类似资料:
  • 问题内容: 对于Java的处理方式以及涉及到的数字和其他类型的数字,我有些困惑。例如: 输出(也许您应该先猜测一下): 这不能编译是可以预料的,是不同的对象。 令我有些惊讶的是,默认情况下9是an ,并且1)甚至没有编译。请注意,您不能将放入期望使用的方法中,但是在这里它们是相等的。 由于两个相同的原因,这令人惊讶,但似乎更糟。 不足为奇,因为自动装箱到和。 不足为奇,因为不同类中的对象不应该是。

  • 只是一个关于继承的理论问题。 假设我有一个类“GamePanel”,它扩展了JPanel。 我知道在课堂上,如果我调用,它将调用父类(JPanel)绘制方法。 但是如果我创建一个对象GamePanel,它不应该继承所有的JPanels方法吗?那么在这种情况下,为什么不工作?当前对象应该能够访问该方法,对吗? 如果没有,为什么

  • 问题内容: 即使int的最大值是2 31 -1,为什么Java HashMap的最大容量是1 << 30而不是1 << 31 ?最大容量初始化为 问题答案: Java使用带符号的整数,这意味着第一位用于存储数字的符号(正/负)。 一个四字节整数具有32位,其中数字部分由于有符号位而只能跨越31位。这将数字范围限制为 2 ^ 31-1 (由于包含0)到 -(2 ^ 31) 。

  • 我一直想知道为什么STL优先级队列默认使用最大堆而不是最小堆。我想到的两个明显的用例是寻路(Dijkstra)和构建霍夫曼代码。这两种算法都需要首先拉取最小元素。由于排序(std::sort)默认使用升序,我想知道priority_queue背后的设计原因是什么,因为我非常喜欢默认的最小堆。

  • 我的代码: 当我尝试运行这样的东西时: 我得到了: 但为什么? 我的主要目标是将返回承诺的中的token转换为一个变量。然后才预形成一些动作。

  • 我刚刚发现,在react函数都是异步的,或者在调用它的函数完成后调用。 现在这两样东西很难消化 在博客中,函数是在函数内部调用的,但是触发函数的原因并不是被调用函数所知道的。 他们为什么要让异步,因为JS是单线程语言,而且这个setState不是WebAPI或服务器调用,所以只能在JS的线程上完成。他们这样做是为了使重新呈现不会停止所有事件侦听器和其他东西,还是有其他设计问题。