2010-02-20 102 views
-2

代碼:這個if語句有什麼不對?

// message is a string , a1 is an integer array .. both well defined 
if(Integer.parseInt(Character.toString(message.charAt(i))) == (a1[i - 1] + a1[i])) { 
    ... 
    } 
+5

你得到了什麼錯誤? – 2010-02-20 05:53:27

+0

請在每行前加上四個空格,或者選擇它並在編輯器中按下「101010」按鈕來格式化您的代碼。 – 2010-02-20 05:54:21

+0

C:\ Users \ Dhruv \ Desktop \ Topcoder> javac * .java BinaryCode.java:29:非法開始表達式 if(Integer.parseInt(Character.toString(message.charAt(i))))== a2 [i-1] + a2 [i])) ^ BinaryCode.java:29:';'預計 if(Integer.parseInt(Character.toString(message.charAt(i))))==( a2 [i - 1] + a2 [i]) – higherDefender 2010-02-20 05:55:52

回答

3

1太多)charAt結束其封閉的,如果條件。

+5

真正的問題是if條件太複雜。通過將這些部分提取爲有意義的變量,它會更容易閱讀,也許不會成爲問題。例如,「a1 [i-1] + a1 [i]」是什麼意思?假設這是預期總和,然後將其分配給變量int expectedSum。所以最後,如果條件可能看起來像「if(extractedNumber == expectedSum)」,它對眼睛更友善,更容易閱讀。 – marklai 2010-02-20 06:03:37

+0

正如markali指出的那樣,代碼的可讀性不是很好,而且這類問題會導致代碼不可讀。 不要試圖在將這些表達式中的一些賦值給變量的假設中編寫這樣的代碼會讓你的程序變慢。它不會發生。 – e4c5 2010-02-20 06:09:11

2

除了語法錯誤:

  1. 這太複雜了。使用局部變量來計算中間結果。使用Character.getNumericValue(ch)代替Integer.parseInt(Character.toString(ch))

1

什麼是i?如果是0,則a1[i - 1]會拋出異常。

+1

如果它是<0 or > = a1.length,則提供的代碼也會引發異常。 – 2010-02-20 09:17:45

+0

@SM - 這是真的,但循環通常從'0'到'a.length - 1'。 – fastcodejava 2010-02-20 09:25:06