2011-04-26 26 views
1
  if (array[r][0].equals("Buy")){ 
       System.out.println(array[r][0]); 
       for (i = 0; i < 8; i++)    
        Buys[r][i] = array[r][i]; 
      } 
     } 
    if (array[r][0]==("Sell")){ 
     System.out.println(array[r][0]); 
     for (i = 0; i < 8; i++)    
      Sales[r][i] =array[r][i]; 
    } 

我是揣摩論證工作,我總是使用參數怎樣的方式要麼是===<=>!=。但現在我試着使用.equals爲數組工作,但似乎沒有錯誤。所以我喜歡任何語法錯誤?還是我用它錯了?的IF參數

欲瞭解更多關於我想做什麼的信息,我是試圖做出的參數,看看它是否等於買入或賣出,它通過。但我想==和.equals ......什麼都不做 我試過了,等於在「買」它仍然不會部分」走通

  if (array[r][0].equals("Buy")){ 
       System.out.println(array[r][0]); 
       for (i = 0; i < 8; i++)    
        Buys[r][i] = array[r][i]; 
      } 

我全部切換到.equals,但對於一些reasong它迫使我去通過這個線

if (array[r][0] != null) 

在此之前

 if (array[r][0] != null) 
     for (r = 0; r < 165; r++){ 
      System.out.println(array[r][0]); 
      if (array[r][0].equalsIgnoreCase("Buy")){ 
       System.out.println(array[r][0]); 
       for (i = 0; i < 8; i++)    
        Buys[r][i] = array[r][i]; 
      } 
     } 
    if (array[r][0].equalsIgnoreCase("Sell")){ 
     System.out.println(array[r][0]); 
     for (i = 0; i < 8; i++)    
      Sales[r][i] =array[r][i]; 
    }   

那就是爲什麼我需要這條線,使這項工作的辯論,因爲顯然它也停下來通,如果聲明

+0

我懷疑你的問題可能不是'=='或'equals'。 'if(array [r] [0]!= null)'我懷疑永遠不會返回true,因爲'r'在這點上等於165,但'array [165]'永遠不會被設置。 – 2011-04-26 22:17:42

+0

它強制我在該字符串上添加null,我應該用什麼替換它,或者我是否甚至需要該行來跳轉到該循環 – user604995 2011-04-26 22:40:36

回答

0

語法是

if(-something-that-evaluates-to-boolean) 

這樣的事情,評估爲布爾值如(a < 1)(b == 1)可以使用。也可以使用返回布爾值的任何東西。在你的情況下,equals()返回布爾值,這就是它的工作原理和用法是完全有效的。

0
  1. 永遠不要命名您的數組'數組'。它沒有傳達任何有意義的信息

  2. 字符串是對象,而不是基元。除非您真的知道自己是doing,否則您應該始終使用.equals()進行比較。這不是語法問題,這是semantics的問題。

0

您還有if (array[r][0]==("Sell"))。讓它使用equals(..)。 java中的字符串不能與==

注:當然,因爲每個對象,==都可以做比較。但是,用繩子將無法正常工作,除非你使用實習字符串(即,對於相同的字符串內容相同的對象)

+1

這是什麼意思?當然,他們可以 - 如果您的字符串被實施(),它可能會有效。我並不是說應該這樣做,但它肯定可以完成。 – 2011-04-26 22:12:46

+0

正在嘗試兩個,它仍然但我有一個在尋找「買」,看看哪一個它需要,但都沒有工作 – user604995 2011-04-26 22:13:11

+0

@阿米爾阿富汗尼當然,但我不想讓我的答案複雜至少在最初階段。 – Bozho 2011-04-26 22:14:25

1

的「說法」,以if布爾表達式 - 一個表達式,其值爲類型爲boolean,其可以是truefalse。這些運算符(==等)返回布爾值,equals()方法以及List接口中的方法等許多其他方法都會返回布爾值。你也可以自己編寫布爾方法。

0

if聲明中的參數必須是truefalse。這意味着您可以使用任何關係運算符(==,!=,<,>,<=,>=)或返回boolean類型的任何方法。

所有的對象都有一個equals可用的方法,該方法返回boolean並且應該返回true如果兩個對象是「平等」,爲你喜歡的定義平等對於一個給定類型的對象。 (例如,具有相同長度和字符的兩個字符串是相等的)因此,這對於if語句是非常有效的參數。

0

您不應該使用==來比較Java中的字符串。使用String.equals,String.equalsIgnoreCase或String.compareTo

+0

是的,我是在嘗試我所知道的,我是用,但我仍然試圖 \t \t \t \t如果(數組[R] [0] .equals( 「買入」)){ \t \t \t \t \t系統。通過out.println(數組[R] [0]); \t \t \t \t \t爲(I = 0; I <8;我++) \t \t \t \t \t \t買入[R] [I] =陣列[R] [I]; \t \t \t \t} – user604995 2011-04-26 22:18:10

0

數組(array [r] [0])的內容可能爲空。 Stringarray的默認值爲null,並且由於null不存在,所以不能對其調用函數。

但是對於「購買」和「銷售」,您知道它們存在且不能爲空。因此,它會更好,以取代 數組[R] [0] .equals( 「買入」) 與 「買入」 .equals(數組[R] [0])

這樣,你不會有提前檢查array [r] [0]是否爲null,因爲equals會爲你做這件事。

你不能使用==來檢查字符串相等的原因之一是因爲字符串是一個對象,在這種情況下==運算符檢查兩個字符串的內存地址是否相同。大多數情況下情況並非如此。等號運算符認識到該對象是一個String並檢查String對象的內容是否相同。