Я новичок здесь и новичок в Java, начался как 1-2 недели назад, и я хотел создать приложение, использующее теорию пифагоры. Все сделано, но теперь я застрял в месте, где я хочу, чтобы пользователь спросил, хочет ли он повторить попытку, начните снова, если он вводит символ или строку вместо числа.
Что я делаю не так? Это мой код, я добавил комментарии, чтобы было легче, если вы не понимаете, чего я пытаюсь достичь.
Заранее спасибо!
package pitagoracalculator;
import java.util.Scanner;
public class PitagoraCalculator {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
double nr1;
double nr2;
double ipot;
boolean raspuns;
String raspuns1;
do{
try{
//user is asked for first number
System.out.print("Introduceti primul numar: ");
nr1 = input.nextDouble();
//user is asked for second number
System.out.print("Introduceti al 2-lea numar: ");
nr2 = input.nextDouble();
//result of calculation
ipot = (nr1*nr1)+(nr2*nr2);
System.out.println("Rezultatul este: "+ipot+"^2");
//in case user inserts a string/char instead of a double => error
} catch (Exception e){
System.err.println("Nu ati introdus un numar.");
break;
}
//user is asked if he wants to do another calculation
System.out.println("Doriti sa faceti un alt calcul? (da/nu)");
raspuns1 = input.next();
//if his answer is yes, raspuns = true, else raspuns = false
if(raspuns1.equalsIgnoreCase("da"))
raspuns = true;
else{
System.out.println("La revedere!");
raspuns = false;
}
//checks if the answer was true or false
}while(raspuns == true);
}
}
замещать
//in case user inserts a string/char instead of a double => error
} catch (Exception e){
System.err.println("Nu ati introdus un numar.");
break;
}
с
//in case user inserts a string/char instead of a double => error
} catch (Exception e){
System.err.println("Nu ati introdus un numar.");
//clear pending input.
if (input.hasNext()) {
input.next();
}
continue;
}
"break" выходит из цикла, "continue" продолжит следующий цикл цикла.
Вы также должны инициализировать переменную raspuns с помощью true
boolean raspuns = true;
Вы можете вызвать метод в исключительном случае. Для этого вы должны сделать метод в том же классе и поместить все ваши вещи в этот метод, используя if-else loop..
catch
, или я неправильно понял?