From c9aed83465aa0ca89ee2eaf9a764f541ba40c6c5 Mon Sep 17 00:00:00 2001 From: Capelier-Marla Date: Thu, 15 Dec 2022 12:11:59 +0100 Subject: [PATCH] getting user input and checking if it's valid --- src/main/java/fr/packageviewer/Main.java | 48 ++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/src/main/java/fr/packageviewer/Main.java b/src/main/java/fr/packageviewer/Main.java index c2a83ea..b328b9d 100644 --- a/src/main/java/fr/packageviewer/Main.java +++ b/src/main/java/fr/packageviewer/Main.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Scanner; import fr.packageviewer.pack.SearchedPackage; @@ -69,6 +70,7 @@ public class Main { } } + // list all packages in reverse order for (int i = packets.size(); i-- > 0; ) { SearchedPackage searchedPacket = packets.get(i); System.out.printf("%s - %s/%s/%s %s%n\t%s%n", @@ -79,5 +81,51 @@ public class Main { searchedPacket.getVersion()==null?"":searchedPacket.getVersion(), searchedPacket.getDescription()); } + + System.out.printf("Pick a package to see in details (0-%s) : %n", packets.size()-1); + Scanner input = new Scanner(System.in); + + // we create vars for the loop + String packetNumberString; + int packetNumber; + boolean notValid; + // we ask input and check if the user input is correct + do { + packetNumberString = input.nextLine(); + // reset notValid to false, we set it in true only if something is wrong + notValid = false; + if(isNumeric(packetNumberString)) { + packetNumber = Integer.parseInt(packetNumberString); + if(packetNumber < 0 || packetNumber >= packets.size()) { + // this number is too big or too small + System.out.println("Enter a valid number"); + notValid = true; + } + } else { + // this is not a number + System.out.println("Enter a valid number"); + notValid = true; + } + } while(notValid); + + input.close(); + + + } + + + /** + * Check if the String given is a number + * @param i the String given + * @return true if the String is a number + * @author Capelier-Marla + */ + private static boolean isNumeric(String i) { + try { + Integer.parseInt(i); + return true; + } catch (Exception e) { + return false; + } } }