Problemas con String y Do While

TrancEdition
24 de Septiembre del 2008
Buenas gente, mi nombre es Nicolás, este es mi primer post y tengo la siguiente duda:

Mi programa es el siguiente: Básicamente es leer números de un archivo de texto, guardarlos en un array, y que después busque qué valores se encuentran en 0, que pregunte si se quiere reemplazar el valor 0 por cualquier otro número para después grabar en el archivo los cambios realizados.

Acá va el programa:

---------------------------------------------------------------------------------

import static java.lang.System.out;
import java.util.Scanner;
import java.io.File;
import java.io.IOException;
import java.io.PrintStream;

public class Principal {

public static void main(String args[]) throws IOException{

Scanner DiscoScan = new Scanner(new File("C:\Prueba.txt"));
Scanner TecladoScan = new Scanner(System.in);

int Lugares[] = new int[10];
int Cuenta;
String Respuesta;

for (Cuenta = 0; Cuenta < 10; Cuenta++){

Lugares[Cuenta] = DiscoScan.nextInt(); // Asigna los valores del archivo de texto al array
}

out.println("CuentatNúmero");

for (Cuenta = 0; Cuenta < 10; Cuenta++){

out.print(Cuenta);
out.print("tt");
out.println(Lugares[Cuenta]); // Muestra la posición y los valores del array
}

// Buscador

Cuenta = 0;
while (Cuenta < 10 && Lugares[Cuenta] != 0) {
Cuenta++;
}

if (Cuenta == 10){

out.println();
out.println("Ninguna Cuenta con valor 0");

} else{

out.println();
out.println("La Cuenta número " +Cuenta+ " está con valor 0");

do { //Do While que evita que se ingresen valores que no sean "si" o "no"

out.print("Le ponemos valor?(si/no): ");

Respuesta = TecladoScan.next();

if (!Respuesta.equalsIgnoreCase("si") && !Respuesta.equalsIgnoreCase("no")) { //En Caso de Ingresar otro valor, muestra "Respuesta Incorrecta"

out.println("Respuesta incorrecta");
}

}

while(!Respuesta.equalsIgnoreCase("si") && !Respuesta.equalsIgnoreCase("no")); //Fin de Primer Do While

if (Respuesta.equalsIgnoreCase("si")) {

do { //Segundo Do While que evita que se ingresen valores menores a 1 y mayores a 10 (Acá empieza mi problema)

out.print("Ingrese Valor para la Cuenta " +Cuenta+ "(1-10): "); //Pregunta que valor se quiere asignar

Lugares[Cuenta] = TecladoScan.nextInt();

if (Lugares[Cuenta] < 1 || Lugares[Cuenta] > 10){

out.println("Valor Incorrecto");

}

}

while(Lugares[Cuenta] < 1 || Lugares[Cuenta] > 10); //Fin de segundo Do While y comienzo de mi duda

PrintStream PonerInfo = new PrintStream("C:\Prueba.txt");

for (Cuenta = 0; Cuenta < 10; Cuenta++){ //Guarda los valores ingresados al archivo de texto

PonerInfo.print(Lugares[Cuenta]);
PonerInfo.print(" ");
}
}
}
}
}
------------------------------------------------------------------------------

Mi duda es la siguiente:

En el segundo "Do While" puedo evitar que el usuario ingrese valores menores a 1 y mayores a 10 y, en caso de ingresarlos, aparece un mensaje que dice "Valor Incorrecto". El problema es que cuando se ingresan letras o caracteres que no sean enteros (lógicamente porque el array es de tipo Int) tira un InputMismatchException.

Lo que quiero hacer (al igual que hice con los valores menores a 1 y mayores a 10) es que al ingresar un String, también me muestre un "Valor Incorrecto". Osea, que identifique que el valor ingresado es de tipo String y que haga un especie de "if (Valor Ingresado == String) { print "Valor Incorrecto")".

Hay alguna forma de realizar lo que quiero hacer??

Se agradecen las respuestas y el tiempo de lectura.