2010-02-20 104 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