Należy sobie najpierw odpowiedzieć, jaki wyjątek dostajemy, kiedy do Scannera wprowadzimy znak inny od liczby. Jest to łatwe do sprawdzenia - włączamy program, wpisujemy błędy znak i sprawdzamy w konsoli :P Okazuje się, że to InputMismatchException. Teraz wystarczy to zaimplementować, a kod wygląda tak:
import java.util.InputMismatchException;
import java.util.Scanner;
public class Aplikacja {
public static void main(String[] args) {
Scanner scanner1 = new Scanner(System.in); // wcześniej ta linia była umieszczona w pętli
double x;
double y;
for (;;) {
try {
System.out.print("Throw a number: ");
x = scanner1.nextDouble();
y = Math.sqrt(x);
System.out.println("The value is: " + y);
} catch (InputMismatchException ex) {
System.out.println("It's not a number!");
}
scanner1.nextLine(); // Jeśli tego nie dodamy, to Scanner cały czas będzie wczytywał nasz błędny
// znak. Możesz sprawdzić, jak program działa bez tej linii ;) Umieść ją na
// chwilę w komentarzu
}
}
}
Dodałem również wywołanie konstruktora Scannera przed pętlę. Nie ma sensu wywoływać go w kółko, to tylko obciąża program (choć w przypadku tak małego programu nie ma to znaczenia, ale ja uważam, że warto kultywować dobre nawyki od początku :P).