Logic For Patterns In Java