Comment faire pour que le programme vérifie l'instance d'une lettre en java?

Oct 08 2020

Je crée une caisse enregistreuse où je dois utiliser un scanner et je ne peux avoir que 5 montants d'entrée. Il doit également inclure hst et c'est en ayant seulement un "h" après ou avant un montant. Ma question est de savoir comment le programme reconnaîtrait-il que j'ai mis un «h» après ou avant un montant? Cela semble être fait uniquement en utilisant une variable de chaîne, alors comment pourrais-je y parvenir? Je dois stocker les entrées dans un tableau, et donc je l'ai fait fonctionner.

Mon code:

 // Import scanner class
 import java.util.Scanner;

// Create class and method
class Main {
public static void main(String[] args) {

// Declare the scanner object and create scanner variables
Scanner inp = new Scanner(System.in);
System.out.println("Press any key to start");
String key = inp.nextLine();
System.out.println("\nEnter the amount of each item");
System.out.println("Upto 5 inputs are allowed!\n");

// Define an array double variable, set the limit to 5 inputs
double[] numbers = new double[5];

// Create a for loop to input any numbers 5 times
for (int i = 0; i < numbers.length; i++){

    // Add a scanner input to let the user type out the values
    numbers[i] = inp.nextDouble();
    }
  }
} 

Réponses

1 Hades Oct 08 2020 at 16:01

le code ci-dessous demande à l'utilisateur une entrée 5 fois, et seules les valeurs valides seront dans le tableau, les valeurs Vald sont les valeurs avec 'h' au début ou à la fin et ne doivent apparaître qu'une seule fois. c'est-à-dire à «h» à la fois à la fin et au début ou plus d'une fois est invalide.

public static void main(String[] args) throws ParseException {
    int counter = 1;
    Double[] result = new Double[5];
    
    int index = 0;
    while(counter <= 5) {           
        Scanner scanner = new Scanner(System.in);
        System.out.print("Enter an Amount ");
        String value = scanner.nextLine();      
        int indexOfH = value.indexOf("h");
        int lastIndexOfH = value.lastIndexOf("h");
        boolean containsHatstartsOrEnd = indexOfH == 0 || indexOfH == (value.length()-1);
    
        if(containsHatstartsOrEnd && indexOfH==lastIndexOfH){ //Validate h at begins or end and should contains only once
            result[index] = Double.parseDouble(value.replace("h", ""));
            index++;
        }
        counter++;
    }
    System.out.println("Printing Valid values");

    for(int i=0; i< result.length; i++) {
        if(result[i]!=null) {
            System.out.println(result[i]);
        }
    }
}

entrée et résultat

Enter an Amount 13.45h
Enter an Amount 55h.65
Enter an Amount 32h.33h
Enter an Amount h100.23
Enter an Amount h20
Printing Valid values
13.45
100.23
20.0