Mira No Se Que Quieres Que Haga Tu Programa
Pero Por Lo Que Explicas Tu Problema Esta Aca:
if(str==tablaDatos[0].localidad() || str==tablaDatos[3].localidad() || str==tablaDatos[6].localidad()) {
System.
out.
printf("Escriba un año: "); Scanner sr
= new Scanner
(System.
in); int num = sr.nextInt();
System.
out.
printf("No hay datos para esa localidadn");
Aca Estas Diciendo Que Si Tu Variable str=tabladatos En Las Posiciones 0,3 Y 6 Te Muestre Que No Hay Datos.
Ahora Bien Mira Esta Otra Parte De Tu Codigo:
else if {(str!=tablaDatos[0].localidad() && str!=tablaDatos[3].localidad() && str!=tablaDatos[6].localidad()) {
System.
out.
printf("No hay datos para esa localidadn");
Aca Dices Que Si Tu Variable str!=tabladatos En 0,3 Y 6 Tambien Te Imprima Que No Hay Datos.
En Conclusion Sea Cual Sea La Posicion De tablaDatos Siempre Te Va A Imprimir Que NO HAY DATOS.
Otra Cosa Tu Variable str Es De Tipo String. Los String Se Comparan Con equals Y No Con ==; Ejemplo