簡體   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