簡體   English   中英

請幫助我理解這段Java代碼

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

我不明白的是:

  1. totals.put(i,0)什么作用?
  2. total_value += (L == 0) ? -1 : 1; total_value += (L == 0) ? -1 : 1; 確切地做?
  3. totals.put(total_value, totals.get(total_value)+1); 做?

對不起,我在問這個問題,但我根本不理解。 謝謝:)

totals.put(i,0)什么作用?

將值0key iHashMap的 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)true1(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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM