【问题标题】:Int++ operator isn't increasing the int the first time it's ran [duplicate]Int++ 运算符在第一次运行时没有增加 int [重复]
【发布时间】:2020-12-13 18:26:24
【问题描述】:

该程序的基本目标是让用户输入一个数字,增加 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--);
  }
}

【问题讨论】:

标签: java int unary-operator unary-function


【解决方案1】:

++ 一元运算符可用作后自增或前自增运算符。 在这种情况下,由于您在 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);

【讨论】:

  • 好的,谢谢,更有意义了。
【解决方案2】:

这是因为num++ 在“背景”中增加了它的值,然后返回它。如果你想增加 num 并立即返回值,你应该使用++num

【讨论】:

    猜你喜欢
    • 2015-10-04
    • 2016-01-03
    • 2011-08-02
    • 2015-08-18
    • 2015-12-18
    • 1970-01-01
    • 2020-09-11
    • 2016-07-22
    相关资源
    最近更新 更多