[英]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+=2
, num = 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.