Un do-while è l'ideale.
Una cosa del genere:
codice:
public class Esercizio {
public static void main(String[] args) {
String command = null;
int number1;
int number2;
int result;
do {
do {
number1 = Input.readInt("Inserisci un numero (maggiore di zero): ");
} while (number1 <= 0);
command = Input.readString("Vuoi sommare un valore? (si o no): ");
if (command.equalsIgnoreCase("si")) {
number2 = Input.readInt("Inserisci il numero da sommare: ");
result = number1 + number2;
System.out.println(number1 + " + " + number2 + " = " + result);
} else {
command = Input.readString("Vuoi sottrarre un valore? (si o no): ");
if (command.equalsIgnoreCase("si")) {
number2 = Input.readInt("Inserisci il numero da sottrarre: ");
result = number1 - number2;
System.out.println(number1 + " - " + number2 + " = " + result);
}
}
command = Input.readString("Vuoi uscire dal programma? (si o no): ");
} while (command.equalsIgnoreCase("no"));
}
}
Per in controllo dei caratteri, non conosco la classe Input (non è una classe standard di Java), magari ha già dei metodi di verifica e ripulitura dell'input... Dai un'occhio alla Javadoc della classe