++,++的困难a

时间:2013-10-10 09:49:37

标签: java

我在一个月前开始编程,我在java中运算符++ a,a ++有些困难。 有人可以一行一行地解释我吗?

import java.util.Scanner; 
public class Number { 
 public static void main(String[] args) { 
 Scanner keyboard = new Scanner(System.in); 
 int number = keyboard.nextInt(); 
 int division1 = (number++) % 10; 
 number = number / 10; 
 System.out.println(number % 10+division1); 
 } 
} 

5 个答案:

答案 0 :(得分:14)

int division1 = (number++) % 10;

相当于:

int division1 = number % 10; 
number += 1;

虽然

int division1 = (++number) % 10;

相当于:

number += 1;
int division1 = number % 10; 

基本上,您的代码相当于:

int number = new java.util.Scanner(System.in).nextInt(); 
System.out.println( ((number + 1) / 10) % 10 + number % 10 ); 

答案 1 :(得分:3)

++a是预增量。这意味着a在返回a的值之前会增加

a++是一个后增量。这意味着{/ 1}}在返回a的值后递增

换句话说,a给出a++的当前值,然后递增它。虽然a直接递增++a。如果aa=42提供System.out.println(a++)42提供System.out.println(++a),而现在43提供a=43

OP还要求逐行解释该代码:

import java.util.Scanner;

public class Number { 
 public static void main(String[] args) { 
   Scanner keyboard = new Scanner(System.in); 
   int number = keyboard.nextInt(); 
   int division1 = (number++) % 10; 
   number = number / 10; 
   System.out.println(number % 10+division1); 
 } 
}

我想,只有main函数中的代码需要一些解释:

   // Create a Scanner object that read from the standard input.
   Scanner keyboard = new Scanner(System.in);

   // Read an integer.
   int number = keyboard.nextInt(); 

   // put (number % 10) into variable division1 and then increment `number`.
   int division1 = (number++) % 10;

   // Divide number by 10.
   number = number / 10; 

   // Print that expression :
   System.out.println(number % 10+division1);

int division1 = (number++) % 10;可能不太清楚。这样读起来会更简单:

int division1 = number % 10;
number += 1;

现在,解释函数的作用:

如果number = 142,我们将2放入变量division1,然后将数字递增并除以10.因此数字得到值14((142 + 1)/ 10)。现在我们打印数字%10 + division1,即4 + 2 = 6。

这里有一些结果示例(我自己编译了代码):

3 => 3
9 => 10
10 => 1
248 => 12

答案 2 :(得分:1)

逐字逐句解释:

import java.util.Scanner; // Import Scanner
public class Number {     // Create Java class called Number
    public static void main(String[] args) {  // Define the main function
        Scanner keyboard = new Scanner(System.in); // Initialize the scanner
        int number = keyboard.nextInt();   // Read an integer from standard input
        int division1 = (number++) % 10;   // Take the unit digit of number, then increase number by 1
        number = number / 10; // Divide number by 10
        // Take the tens digit of the original number (or tens digit + 1, if the unit was 9), sum with the unit digit previously stored in division1
        System.out.println(number % 10+division1);
        // The result would sum the last two digit of number if it doesn't end with 9, or sum the last two digit +1 if the unit was 9.
    } 
}

有些情况:

f(1) = 1
f(124) = 2+4 = 6
f(39) = 4+9 = 13
f(5248) = 4+8 = 12

答案 3 :(得分:0)

++ a是预增量。这意味着在评估表达式之前a会递增。

a ++是一种后增量。这意味着在评估表达式后a会增加。

初学者可能会感到困惑的一件事是这个'表达'是什么,之后会发生增量 实际上是; 使用++时,它位于“;”之后当增量实际发生时 当你使用++ a时;就像你在这个之前插入一个声明a = a + 1然后你的表达来了。

答案 4 :(得分:0)

我认为,有趣的部分是以下几行:

int number = keyboard.nextInt(); 

在这里,您可以获得用户的输入。说,他进入12

int division1 = (number++) % 10; 

division1将变为2,因为12 mod 10等于2。 之后,number将增加1,现在为13

现在我们假设有一个++number而不是number++。在这种情况下,我们会在模运算之前增加number 。首先,number变为13,然后我们将3分配给division1

这是a++++a的基本内容 - 时间,当值增加时。 a++表示所有操作都按原样使用a,最后一步,a会递增。 ++a以其他顺序工作。