Scanner wprowadz = new Scanner(System.in);
System.out.println("Podaj druga liczbe");
b = wprowadz.nextDouble();
/*jak zrobic alternatywny scenariusz, w ktorym wprowadzona wartosc nie bedzie double'm i ktory zamiast wyswietlac bledu pokaze nam
System.out.println("Nie wprowadziłeś poprawnej wartości , wprowadź liczbę"); ?
- Rejestracja:około 5 lat
- Ostatnio:prawie 5 lat
- Postów:1
0
edytowany 1x, ostatnio: Koziołek

- Rejestracja:ponad 11 lat
- Ostatnio:5 dni
- Lokalizacja:Kraków
- Postów:1694
- Rejestracja:około 5 lat
- Ostatnio:prawie 4 lata
- Postów:9
1
W sumie to można także użyć wyjątku InputMismatchExeption. Ale nie gwarantuje, że to jest rozwiązanie optymalne.
double input =0;
Scanner scan = new Scanner(System.in);
while(true) {
try {
input= scan.nextDouble();
break;
} catch( InputMismatchException e){
System.out.println( "Nie wprowadziłeś poprawnej wartości , wprowadź liczbę");
scan.next();
}
}

Koziołek
To nie jest rozwiązanie, bo sterujesz przepływem za pomocą wyjątków. Wprowadzenie błędnej wartości nie jest czymś „wyjątkowym”.
3
@theED: użycie hasNextXXX jak sugerował @szweszwe, ale w sensowny sposób:
class MyScaner{
private InvalidInputHandler iih;
private Scanner scanner;
public MyScaner(InvalidInputHandler iih, InputStream in){
this.iih = iih;
this.scanner = new Scanner(in);
}
public Either<String, Double> next(){
if(scanner.hasNextDouble()) return Either.right(scanner.nextDouble());
return iih.handle(scanner::next)
}
}
//
class InvalidInputHandler{
public Either<String, Double> handle(Supplier<Double> operation){
Try.of(operation::get).toEither();
}
}
Obsługę błędu delegujesz do InvalidInputHandler
i niech tam będzie czy to prosty try/catch
czy tak jak wyżej użycie Vavr.
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.