Int ++运算符在第一次运行时不会增加int

问题描述

该程序的基本目标是让用户输入数字,先增加3倍,然后再使用一元运算符将其减少3倍。问题是,当它运行时,第一个“数字现在是___”行最终仅显示用户输入的数字,而不是增加一个。 Java的新手,真的不知道为什么

import java.util.Scanner;

class U1_L4_Activity_One{
  public static void main(String[] args){
      
      int num;
      Scanner startNum = new Scanner(system.in);
      
      //Enter an int (num)
      System.out.println("Enter starting number(must be an integer)");
      num = startNum.nextInt();
      
      //Increases num 3 times
      System.out.println("number is Now " + num++);
      System.out.println("number is Now " + num++);
      System.out.println("number is Now " + num++);
      //Decreases num 3 times,back to original number
      System.out.println("number is Now " + num--);
      System.out.println("number is Now " + num--);
      System.out.println("number is Now " + num--);
  }
}

解决方法

++一元运算符可以用作后递增或前递增运算符。 在这种情况下,由于您已经在num变量之后添加了++,因此它正在执行后递增操作。 这意味着将首先显示num变量值,然后将其递增1。 这就是先打印数字然后递增的原因,导致再次显示相同的数字。

要解决此问题,您可以使用预增量操作。

  System.out.println("number is now " + ++num); // <-- the num is incremented first and then displayed.
  System.out.println("number is now " + ++num);
  System.out.println("number is now " + ++num);
  //Decreases num 3 times,back to original number
  System.out.println("number is now " + --num); // <-- pre decrement operation
  System.out.println("number is now " + --num);
  System.out.println("number is now " + --num);
,

这是因为num++在“背景”中增加其值,然后将其返回。如果要递增num并立即返回该值,则应使用++num