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();
    }
}

package com.ejpm.euler;

import com.ejpm.euler.problem.Problem;
import java.util.logging.Level;
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) {
        System.out.println("Project Euler Solutions");
        new App().executeProblems();
        System.out.println("DONE");
    }
 

    public void executeProblems() {
        final String classPackage = "com.ejpm.euler.problem.impl";

        for (int i = 0; i < 900; i++) {
            final String className = classPackage.concat(".Problem") + i;
            try {
                final Class<?> c = Class.forName(className);
                final Problem problem = (Problem) c.newInstance();
                problem.execute();
            } catch (ClassNotFoundException ex) {
            } catch (InstantiationException | IllegalAccessException ex) {
                java.util.logging.Logger.getLogger(App.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }
}

Add reflection to problem execution