[英]Please help me understand this piece of code in Java
在理解這段代碼的確切功能時遇到了問題:
1. HashMap<Integer, Integer> totals = new HashMap<>();
2.
3. for (int i = -NBR_STEPS; i <= NBR_STEPS; i++) {
4. totals.put(i, 0);
5. }
6. System.out.println("");
7. for (int i = 0; i < NBR_WALKS; i++) {
8. int total_value = 0;
9. for (int j = 0; j < NBR_STEPS; j++) {
10. int L = (int) (Math.random() * 2);
11. total_value += (L == 0) ? -1 : 1;
12. }
13. totals.put(total_value, totals.get(total_value) + 1);
14. }
15. }
我不明白的是:
totals.put(i,0)
什么作用? total_value += (L == 0) ? -1 : 1;
total_value += (L == 0) ? -1 : 1;
確切地做? totals.put(total_value, totals.get(total_value)+1);
做? 對不起,我在問這個問題,但我根本不理解。 謝謝:)
totals.put(i,0)
什么作用?
將值0
的key i
在HashMap的 totals
。
total_value += (L == 0) ? -1 : 1;
total_value += (L == 0) ? -1 : 1;
確切地做?
total_value += 1;
等於total_value = total_value + 1
? 是三元運算符 。 此語句的值(L == 0) ? -1 : 1;
(L == 0) ? -1 : 1;
是-1
時(L == 0)
是true
和1
時(L == 0)
是false
total_value += (L == 0) ? -1 : 1;
是相同的:
if (L == 0)
total_value = total_value - 1; // subtract 1 from total_value
else
total_value = total_value + 1; // add 1 to total_value
totals.put(total_value, totals.get(total_value)+1);
做?
將值從哈希映射位置total_value+1
復制到哈希映射位置total_value
。 實際上,它將值從下一個位置復制到當前位置。
編輯:Hashmap保存鍵值對。 因此,第一個參數是鍵,第二個參數是值。
a += 1;
與a = a + 1
a = b == 1 ? 1 : 2;
意思是一樣的:
if(b == 1)
a = 1;
else
a = 2;
totals.put(i,0)有什么作用? 它將一個鍵,值對添加到地圖。 變量“ i”是鍵,“ 0”是與鍵關聯的值。
total_value + =(L == 0)是什么? -1:1; 確切地做? 那是一個If-else語句。 簡化版本就是這樣。
if(L==0)
total_value += -1
else{
total_value += 1
}
totals.put(total_value,totals.get(total_value)+1)是什么? 做?
它將一個鍵值對添加到哈希圖中。 total_value是鍵,totals.get(total_value)+1是與鍵關聯的值。
希望能有所幫助。
關於問題2
使用C,Java和JavaScript編寫傳統的if-else構造:
if (a > b) {
result = x;
} else {
result = y;
}
可以將其重寫為以下三元語句:
result = a > b ? x : y;
在您的情況下,如果為true,則條件為(L==0)
:
total_value=total_value+-1
所以...
total_value=total_value-1
如果條件不成立:
total_value=total_value+1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.