2017-08-10 64 views
1
static void eldontes() { 
    System.out.println("--- Choosing ---"); 
    int[] sorozat = new int[]{1, -1, 3, 5}; 
    boolean exists = false; 
    for (int i = 0; i < sorozat.length && !exists; i++) { 
     int elem = sorozat[i]; 
     if (elem < 0) { 
      exists = true; 
     } 
    } 

    System.out.println("There's negative: " + exists); 

首先,for循環在做什麼? !存在應該意味着布爾值現在是真實的,不是嗎?所以增加我utnil sorozat.length和存在=真?這是什麼意思?基本的java代碼問題。這些exmaples如何工作?

那麼這裏的這個例子:從int tmp = sorozat[j];開始我真的不知道發生了什麼

static void buborekRendezes() { 
    System.out.println("--- Bubble order ---"); 
    int[] sorozat = new int[]{9, 4, 6, 2, 3, 0, 5, 7, 8, 1}; 
    for (int i = sorozat.length - 1; i > 0; i--) { 
     for (int j = 0; j < i; j++) { 
      if (sorozat[j] > sorozat[j + 1]) { 
       int tmp = sorozat[j]; 
       sorozat[j] = sorozat[j + 1]; 
       sorozat[j + 1] = tmp; 
      } 
     } 
    } 
    System.out.println(Arrays.toString(sorozat)); 
} 

。最後三行是做什麼的?爲什麼代碼末尾的tmp在右側?

對不起,我知道這些是真正的基本問題,我是Java新手。

回答

3
for (int i = 0; i < sorozat.length && !exists; i++) { 
     int elem = sorozat[i]; 
     if (elem < 0) { 
      exists = true; 
     } 
    } 

!exists是確保循環中斷,一旦第一負值發現..

根據你的下一個代碼片段

for (int i = sorozat.length - 1; i > 0; i--) { 
     for (int j = 0; j < i; j++) { 
      if (sorozat[j] > sorozat[j + 1]) { 
       int tmp = sorozat[j]; 
       sorozat[j] = sorozat[j + 1]; 
       sorozat[j + 1] = tmp; 
      } 
     } 
    } 

這是一個基本的工作代碼對於Bubble sort in java..Read算法首先,然後它會更容易理解的代碼。

int tmp = sorozat[j]; 
sorozat[j] = sorozat[j + 1]; 
sorozat[j + 1] = tmp; 

這三行是swap出席sorozat[j]和值sorozat[j+1]

2

首先,什麼是!存在於for循環做什麼?

實際上!exists意味着布爾變量existsfalse

!exists (is equivalent to) exists == false 

而且它用在這裏的for循環的狀態塊,退出循環每當elem<0得到滿足,換句話說,只要exists == true

for (int i = 0; i < sorozat.length && !exists; i++) { 
    int elem = sorozat[i]; 
    if (elem < 0) { 
     exists = true; 
    } 
} 

所以增量I utnil sorozat.length並存=真的嗎?這是什麼意思?

不就意味着增加而i<sorozat.lengthexists == false,每當exists設置爲true我們將退出循環。

1
  1. 你增加我沒有,直到但我小於sorozat.length和!存在。 Term!存在相當於(exists == false)。所以當你到達sorozat的末尾時,你的循環就會停止,或者你找到了你正在尋找的東西,也就是說,一個小於零的元素。

  2. 這裏的值在sorozat [j]和sorozat [j + 1]之間交換。爲了做到這一點,sorozat [j]值存儲在tmp變量中以避免它被覆蓋,然後將sorozat [j + 1]放入sorozat [j],最後從tmp獲取的初始sorozat [j]值爲寫入sorozat [j + 1]。沒有tmp變量,你會失去sorozat [j]值。

1
int tmp = sorozat[j]; 
sorozat[j] = sorozat[j + 1]; 
sorozat[j + 1] = tmp; 

這是基本的algorythm交換兩個變量的值。 基本上,使用進程中的時間變量(tmp)交換值sorozat[j]sorozat[j+1]。 所以,如果這3條線後sorozat[j]=4sorozat[j+1]=2結果將是sorozat[j]=2sorozat[j+1]=4

+0

感謝您的快速解答! :) – JustMatthew