package com.ejpm.euler;

import com.ejpm.euler.problem.impl.Problem1;
import com.ejpm.euler.problem.impl.Problem2;
import com.ejpm.euler.problem.impl.Problem3;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class App {

    @SuppressWarnings("unused")
    private static final Logger LOGGER = LoggerFactory.getLogger(App.class);

    public static void main(String[] args) {
        new App().proceed();
    }

    public void proceed() {
        System.out.println("Project Euler Solutions");
        //final Reflection
        
        new Problem1().execute();
        new Problem2().execute();
        new Problem3().execute();
    }
}

@@ -52,21 +52,15 @@
 lem.
-impl.
 Problem
-1
 ;%0Aim
@@ -68,89 +68,31 @@
 ort 
-com.ejpm.euler.problem.impl.Problem2;%0Aimport com.ejpm.euler.problem.impl.Problem3
+java.util.logging.Level
 ;%0Aim
@@ -334,34 +334,133 @@
     
-new App().proceed(
+System.out.println(%22Project Euler Solutions%22);%0A        new App().executeProblems();%0A        System.out.println(%22DONE%22
 );%0A    %7D
 %0A%0A  
@@ -455,16 +455,18 @@
 );%0A    %7D
+%0A 
 %0A%0A    pu
@@ -479,101 +479,288 @@
 oid 
-proceed() %7B%0A        System.out.println(%22Project Euler Solutions%22);%0A        //final Reflection
+executeProblems() %7B%0A        final String classPackage = %22com.ejpm.euler.problem.impl%22;%0A%0A        for (int i = 0; i %3C 900; i++) %7B%0A            final String className = classPackage.concat(%22.Problem%22) + i;%0A            try %7B%0A                final Class%3C?%3E c = Class.forName(className);
 %0A   
@@ -764,25 +764,24 @@
         
-%0A
         
 new Prob
@@ -772,27 +772,29 @@
         
-new
+final
  Problem
 1().exec
@@ -789,18 +789,41 @@
 blem
-1().execut
+ problem = (Problem) c.newInstanc
 e();
@@ -835,22 +835,23 @@
     
-new P
+        p
 roblem
-2()
 .exe
@@ -870,33 +870,249 @@
     
-new Problem3().execute();
+    %7D catch (ClassNotFoundException ex) %7B%0A            %7D catch (InstantiationException %7C IllegalAccessException ex) %7B%0A                java.util.logging.Logger.getLogger(App.class.getName()).log(Level.SEVERE, null, ex);%0A            %7D%0A        %7D
 %0A   

Add reflection to problem execution