Hola,
La descripción de tu post no es adecuada "Una ayudita"  
 , y usa Código GeSHI
Este es tu código algo modificado para que funcione pero se hacia largo y aun faltaba comparar  
import java.util.Scanner;
 
public class ProfeAdmin {
 
    public static void main
(String[] args
) {  
        Scanner leer 
= new Scanner
(System.
in);        System.
out.
println("1)Profesor");         System.
out.
println("2)Administrador");         int Opcion = leer.nextInt();
 
 
        int count = 1; // uso de contador para contrar la oportunidades que son 3
 
        switch (Opcion) {
 
            case 1:
 
                System.
out.
println("Ingrese su nombre de usuario: ");  
                System.
out.
println("Ingrese su contraseña: ");                 String contraseña 
= leer.
next();  
 
                // establecer 3 oportunidades si se equivoca en el nombre o la contraseña
 
                if (nom.equals(nombre) && contra.equals(contraseña)) {
                    mostrar("Correcto access granted");
 
                } else {
                    if (!nom.equals(nombre)) { // se lee, "si nom no es igual a nombre" , dara true
                        System.
out.
println("Nombre incorrecto");                         int countO = 3;
                        while (count <= 3) {
                            ShowData.showLn("Oportunidad " + (countO--));
                            ShowData.showLn("Ingrese Nombre");
                            final String newName 
= leer.
next();  
                            if (newName.equals(nom)) {
                                ShowData.showLn("Nombre Correcto");
                                break;
                            } else {
                                count++;
                                continue;
                            }
 
                        }
                        count = 0; // seteando el contador a cero, sin eso el comportamiento no sera el adecuado
                                   // xq no entrara mas en el while
 
                    } else if (!contra.equals(contraseña)) { //si la contra no es igual a contraseña, dara true
 
                        System.
out.
println("Contraseña incorrecta");                         int countO = 3;
                        while (count <= 3) {
                            mostrar("Oportunidad " + (countO--)); // decremento del count0 en 1
                            mostrar("Ingrese contraseña");
                            final String newPass 
= leer.
next();  
                            if (newPass.equals(contra)) {
                                mostrar("Contraseña correcta");
 
                                /*
                                Aqui introducir siguente menu
                                 */
 
                                break;
                            } else {
                                count++;
                                continue;
                            }
 
                        }
                        count = 0; // seteando el contador a cero, sin eso el comportamiento no sera el adecuado
                                    // xq no entrara mas en el while
 
                    }
 
                }
 
                break;
 
            case 2:
                System.
out.
println("Ingrese su nombre de usuario: ");                 System.
out.
println("Ingrese su contraseña: ");                 String contraseña2 
= leer.
next();  
 
                if (nom2.equals(nombre2) && contra2.equals(contraseña2)) {
                    mostrar("Correcto access granted");
                } else {
                    if (!nom2.equals(nombre2)) { // se lee, "si nom no es igual a nombre" , dara true
                        System.
out.
println("Nombre incorrecto");                         int countO = 3;
                        while (count <= 3) {
                            mostrar("Oportunidad " + (countO--));
                            mostrar("Ingrese Nombre");
                            final String newName 
= leer.
next();  
                            if (newName.equals(nom2)) {
                                mostrar("Nombre Correcto");
                                break;
                            } else {
                                count++;
                                continue;
                            }
 
                        }
                        count = 0; // seteando el contador a cero, sin eso el comportamiento no sera el adecuado
                        // xq no entrara mas en el while
 
                    } else if (!contra2.equals(contraseña2)) { //se lee, la contra no es igual a contraseña, dara true
 
                        System.
out.
println("Contraseña incorrecta");                         int countO = 3;
                        while (count <= 3) {
                            mostrar("Oportunidad " + (countO--)); // decremento del count0 en 1
                            mostrar("Ingrese contraseña");
                            final String newPass 
= leer.
next();  
                            if (newPass.equals(contra2)) {
                                mostrar("Contraseña correcta");
 
                                /*
                                Aqui introducir siguente menu
                                 */
 
                                break;
                            } else {
                                count++;
                                continue;
                            }
 
                        }
                        count = 0; // seteando el contador a cero, sin eso el comportamiento no sera el adecuado
                        // xq no entrara mas en el while
 
                    }
 
                }
 
                break;
        }
    }
 
    private static void mostrar
(final String s
) {     }
 
    //establecer oportunidades, son 3, creamos un metodo
    private void filtrar() {
 
    }
}
 
 
tu código original carece de métodos, uso de contructor, de variables de instancia, variables de clase, es bueno que le des un vistazo y refactorises tu código con eso., y ahora con este codigo se nota algo de diferencia con respecto a la reducción de líneas, solo que usamos tipos enum aquí 
para las sentencias switch puedes usar enum  
 ver linea 50 el método  getUsersByID()
 package foro;
 
import javax.swing.*;
import java.util.EnumSet;
import java.util.NoSuchElementException;
import java.util.Scanner;
 
enum Users {
 
    DOCENTE(1),
    ADMINISTRADOR(2);
 
 
        this.id = id;
    }
        return id;
    }
 
    //buscando los usarios
    public static Users getUsersByID
(final Integer id
) {         return EnumSet.allOf(Users.class)
                .stream()
                .filter(object -> id.equals(object.id))
                .findFirst() //detienela busqueda de las lista con la primera conincidencia
                .get(); // retorna un NoSuchElementException en caso que no exista dicho id
    }
 
}
 
 
public class ProfeAdmin2 {
 
    private static final Scanner LEER 
= new Scanner
(System.
in);     private static final String ACCESS_GRANTED 
= "Access Granted.";     private static final String DATOS_INCORRECTOS 
= "Datos incorrectos.";  
 
    public ProfeAdmin2() {
        System.
out.
println("1)Profesor");         System.
out.
println("2)Administrador");         final int opcion = LEER.nextInt();
        try {
            final Users users = Users.getUsersByID(opcion);
            switch (users) {
                case DOCENTE:
                    process(nom,contra); // pasando parametros correspondientes al metodo process para reutilizarlo
                    break;
                case ADMINISTRADOR:
                    process(nom2,contra2); // pasando parametros correspondientes al metodo process para reutilizarlo
                    break;
            }
            JOptionPane.
showMessageDialog(null,
"No se encuentra el usuario " + opcion
);             mostrar("Saliendo de la aplicacion");
        }
 
    }
 
    private void process
(final String paramNom, 
final String paramPass
) {         System.
out.
println("Ingrese su nombre de usuario: ");         final String nombre 
= LEER.
next();  
        System.
out.
println("Ingrese su contraseña: ");         final String contraseña 
= LEER.
next();  
        // establecer 3 oportunidades si se equivoca en el nombre o la contraseña
        int count = 0;
        if (nombre.equals(paramNom) && contraseña.equals(paramPass)) {
            mostrar(ACCESS_GRANTED);
            /*
            Pasar a otro menu aqui
             */
        } else {
 
            if(!nombre.equals(paramNom) && !contraseña.equals(paramPass)) {
                mostrar(DATOS_INCORRECTOS);
                ingresarNombre("", paramNom);
                ingresarPass("", paramPass);
                mostrar(ACCESS_GRANTED);
            }
 
            else if (!nombre.equals(paramNom)) { // se lee, "si nom no es igual a paramNom" , dara true
                ingresarNombre("Nombre incorrecto",paramNom);
            } else if (!contraseña.equals(paramPass)) { //si la contra no es igual a paramPass, dara true
                ingresarPass("Contraseña incorrecta",paramPass);
            }
        }
    }
 
    private void ingresarNombre
(final String msg,
final String paramNom
) {         int countO = 3;
        int count = 0;
        while (count <= 3) {
            mostrar("Oportunidad " + (countO--));
            mostrar("Ingrese Nombre");
            final String newName 
= LEER.
next();             if (newName.equals(paramNom)) {
                mostrar("Nombre Correcto");
 
                break;
            } else {
                count++;
                continue;
            }
        }
        count = 0; // seteando el contador a cero, sin eso el comportamiento no sera el adecuado
        // xq no entrara mas en el while
    }
    private void ingresarPass
(final String msg, 
final String paramPass
) {         int countO = 3;
        int count = 0;
        while (count <= 3) {
            mostrar("Oportunidad " + (countO--)); // decremento del count0 en 1
            mostrar("Ingrese contraseña");
            final String newPass 
= LEER.
next();             if (newPass.equals(paramPass)) {
                mostrar("Contraseña correcta");
 
                break;
            } else {
                count++;
                continue;
            }
        }
        count = 0; // seteando el contador a cero, sin eso el comportamiento no sera el adecuado
        // xq no entrara mas en el while
    }
 
    private <T> void mostrar(final T s) {
    }
    public static void main
(String ..._0x52
) {         new ProfeAdmin2();
    }
 
}
 
