2017-01-09 5 views
0

で、この時間は、私はターミナルで、この次のエラーを取得する理由を知りたい:は、Pythonのようにブール値に変数の割り当てを変更するが、Java

Users-MBP:~ user$ javac Testing2.java 
Testing2.java:18: error: variable result is already defined in method main(String[]) 
    boolean result = true; 
      ^
1 error 

私は次のプログラムを実行しようとすると:

public class Testing2 { 

    private static int TwiceRepetition(int[] elems) { 

     /// 

    } 

    public static void main(String[] args) { 

     /// 
    } 
} 

実際には、任意の要素の連続する反復長が2の場合、trueを出力することが望ましい出力です。それ以外の場合は、falseを出力します。

変数には結果が既に定義されているというエラーが表示されます。はい。しかし、Pythonのように再定義することはできませんか?例えば

は、Pythonで、私は(条件が満たされた場合はtrueに、変数の結果を再定義から私を妨げるエラーがありませんという意味)これを実行するために許可されています:

def p1(x): 
    result = False 
    i = 0 
    while i < len(x) - 1: 
     if x[i]== x[i+1]: 
      result = True 
     i = i + 1 
    return result 

が、Javaには、それは動作しません、なぜですか?

+2

'result = true'を実行してください。 Javaはすでに 'result'の型を知っていますので、' Java'は 'Python'ではないので、別の規則を使用するので、 –

+0

を思い出させる必要はありません。 – furas

+0

ちなみに、pythonの方法は 'zip'とリストの理解を使うことです:' def p1(x):任意のaを返す(a == b、a、bをzip(x、x [1:])で返す) ' – DyZ

答えて

0
あなたが最初の繰り返し見つけたときにループをブレーク

for (int s = 0; s + 1 < args.length; s++) { 
    if (args[s].equals(args[s + 1])) { 
     result = true; 
     break; 
    } 
} 

をそれ以外の場合は、変数resultが再び上書きになります。

+0

私はそれをチェックしました。まだ動作していません。必要でないときは、まだ偽に戻ります。 –

+2

右。文字列を比較するので、 '=='ではなく '.equals()'を使わなければなりません。 – DyZ

関連する問題