繁体   English   中英

打印数字值会产生意外结果

[英]Printing the values of a number is giving unexpected results

由于某种原因,我无法使以下代码正常工作。 这就是我在java中的功能:

int num = 8; 

System.out.println("Value is now " + (num));
System.out.println("Value is now " + (num+2));
System.out.println("Value is now " + (num-4));
System.out.println("Value is now " + (num*5));
System.out.println("Value is now " + (num/3));
System.out.println("Value is now " + (++num));
System.out.println("Value is now " + (--num));

它打印以下内容:

Value is now 8
Value is now 10
Value is now 4
Value is now 40
Value is now 2
Value is now 9
Value is now 8

我期待得到这个:

Value is now 8
Value is now 10
Value is now 6
Value is now 30
Value is now 10
Value is now 11
Value is now 10

那么,我如何获得答案来沿线进行呢? 我一直在阅读和搜索,找不到正确的方法。

一个常见的错误! 您正在内联使用变量,这意味着变量本身不会被更改。 为了实际更改变量,您需要使用“ =”。 这将更改变量的实际值。

因此,例如

int num = 8;

System.out.println("Value is now " + (num));
num = num + 2;
System.out.println("Value is now " + (num));
num = num - 4;
System.out.println("Value is now " + (num));
num = num * 5;
System.out.println("Value is now " + (num));
num = num / 3;
System.out.println("Value is now " + (num));
System.out.println("Value is now " + (++num));
System.out.println("Value is now " + (--num));

现在,这是很多代码。 Java提供了一些可以缩短此时间的不错的小功能,称为“语法糖”。 首先,“ =”将返回设置为变量的值。 所以现在我们可以这样写:

int num = 8;

System.out.println("Value is now " + (num));
System.out.println("Value is now " + (num = num + 2));
System.out.println("Value is now " + (num = num - 4));
System.out.println("Value is now " + (num = num * 5));
System.out.println("Value is now " + (num = num / 3));
System.out.println("Value is now " + (++num));
System.out.println("Value is now " + (--num));

接下来,我们可以将这些操作写为简写。 num = num + 2变为num+=2num = num * 5变为num*=5 ,依此类推。

因此,我们可以将整个代码编写为:

int num = 8;

System.out.println("Value is now " + (num));
System.out.println("Value is now " + (num += 2));
System.out.println("Value is now " + (num -= 4));
System.out.println("Value is now " + (num *= 5));
System.out.println("Value is now " + (num /= 3));
System.out.println("Value is now " + (++num));
System.out.println("Value is now " + (--num));

祝你今天愉快!

您遇到的问题是您实际上没有更改num的值。 Num始终为8,因此您只是在数字8上打印各种运算。为什么不尝试这样的操作:

int num = 8; 
System.out.println("Value is now " + (num));
num += 2;
System.out.println("Value is now " + (num));
num -= 4;
System.out.println("Value is now " + (num));
num *= 5;
System.out.println("Value is now " + (num));
num /= 3;
System.out.println("Value is now " + (num));
num++;
System.out.println("Value is now " + (num));
num--;
System.out.println("Value is now " + (num));

编辑

在命令行中运行,收到预期的输出:

Value is now 8
Value is now 10
Value is now 6
Value is now 30
Value is now 10
Value is now 11
Value is now 10

只需将新值分配给变量即可。

int num =8 
System.out.println("Value is now " + num);
num = num +2;
System.out.println("Value is now " + num);
num = num -4;
System.out.println("Value is now " + num);
num = num *5;
System.out.println("Value is now " + num);
......

您现在的操作方式是不更改变量的值。

您可以将num-4读为“如果我从num减去4将会是多少”。

您正在寻找类似num = num - 4东西,这是“分配给num等于从num减去4的新值”。

您需要分配新值。

System.out.println("Value is now " + (num));
System.out.println("Value is now " + (num+=2));
System.out.println("Value is now " + (num-=4));
System.out.println("Value is now " + (num*=5));
System.out.println("Value is now " + (num/=3));
System.out.println("Value is now " + (++num));
System.out.println("Value is now " + (--num));

System.out.println可以将所需的所有变量打印到控制台。

除了最后两行之外,您只是在对数学应用变量时就给println赋值。 最后两行有效,因为++ x /-x表示x = x + 1或减号。 您需要以这种方式分配变量,以使代码按指定的方式工作。

在Java中,原语(例如: int )是“不可变的”。 这意味着您不能直接更改它们(也就是更改它们),只能创建新的。

如果要有效地修改int num ,则必须重新分配它。 这将用新值覆盖当前值。 这是一个例子:

int num = 8;
System.out.println("Value is now " + num);
num = num + 2;
System.out.println("Value is now " + num);
num = num + 2;

但是,将其可视化的更好方法是这样考虑:

int num1 = 8;
System.out.println("Value is now " + num1);
int num2 = num1 + 2;
System.out.println("Value is now " + num2);
int num3 = num2 + 2;

我说这是一种更好的可视化方法,因为在原始示例中,您没有更改 num ,而只是重新分配了它。 第二个示例使这一点更加明确。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM