Ich kann mir nicht helfen, nach zwei Jahren Ruby sieht Java manchmal nur noch umständlich aus. Gerade bei kleinen, in sich geschlossenen Programmen sollte man die Sprache mit Bedacht wählen. Wie aufwendig kann es sein herauszufinden, ob die verschiedenen Klammerarten in einem String ausbalanciert sind? Diese Frage stellte sich auch Code Corner und lieferte diese Lösung in Java:
Als Rubyist juckt es da in den Fingern, das muss doch schneller gehen.
require 'test/unit/assertions' extend MiniTest::Assertions class String BRACKETS = { "(" => ")", "[" => "]", "{" => "}", } def balanced? stack = [] each_char do |char| if BRACKETS.keys.include? char stack.push char elsif BRACKETS.values.include? char return false if BRACKETS[stack.pop] != char end end stack.empty? end end assert "".balanced? assert "([Hell{} T(h(e[r]e))]boom)".balanced? assert not("(a[b{c)d]e}".balanced?) assert not("([{".balanced?) assert not("}])".balanced?)