[英]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.