2016-07-27 26 views
-3

Hier ist die Funktion zum Ausgleichen von Klammern in scala. Ich erhalteTyp Mismatch in Scala Code

Error:(36, 10) type mismatch; 
found : Unit 
required: Int 
     a=a+1 
var a = 0 

     def balance(chars: List[Char]): Boolean = { 
     if(chars.isEmpty) 
      return Nil 
     { 
      if (chars.head == ')') 
      a=a-1 
      else (chars.head == '(') 
      a=a+1 
     } 
     if (a == -1) 
      return false 
     if ((a == 1 || a == 0) && chars.tail.isEmpty!= 0) 
      balance(chars.tail) 
     if (a == 0 && chars.tail.isEmpty) 
      return true 
     } 

Kann mir jemand sagen, warum dieser Fehler kommt?

Antwort

4

Der Code ist voller Fehler.

Sie geben Nil zurück, während Ihre Funktion den Rückgabetyp hat.

Sie definieren else mit Bedingung ohne if.

Sie verwenden die mehrdeutige Bedingung chars.tail.isEmpty!= 0.

Korrigieren Sie diese und geben Sie Ihren Code erneut ein. Es gibt mehr Fehler, aber im Moment ist es schwer zu sagen, ob Sie rekursiv aufrufen und auf leere Liste zurückkehren oder unter bestimmten Bedingungen zurückkehren möchten. Wenn Sie dann noch Probleme haben, werde ich meine Antwort entsprechend aktualisieren.