Aquí tienes un ejemplo de código en Java que realiza la validación del DNI que describiste:

import java.util.Scanner;

public class DNIValidator {
  private static final String[] letras = {"T", "R", "W", "A", "G", "M", "Y", "F", "P", "D", "X", "B", "N", "J", "Z", "S", "Q", "V", "H", "L", "C", "K", "E"};

  public static boolean validateDNI(String dni) {
    int num = Integer.parseInt(dni.substring(0, 8));
    int resto = num % 23;
    String letra = letras[resto];
    return letra.equals(dni.substring(8));
  }

  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    System.out.print("Introduce un DNI: ");
    String dni = sc.nextLine();
    if (validateDNI(dni)) {
      System.out.println("El DNI es válido");
    } else {
      System.out.println("El DNI es inválido");
    }
  }
}

En este código, la función validateDNI toma como entrada un string que representa un DNI y lo valida utilizando los criterios que describiste. La función divide la parte numérica por 23 y obtiene el resto, y luego compara este resto con el último carácter del DNI para determinar si es válido o no.

En la función main, se pide al usuario que introduzca un DNI y se llama a la función validateDNI para validarlo. Si el DNI es válido, se imprime un mensaje de que es válido, de lo contrario, se imprime un mensaje de que es inválido.
spam fails_task lang_mismatch pii not_appropriate hate_speech sexual_content quality toxicity humor helpfulness creativity violence