Programın java'da bir harfin örneğini kontrol etmesini nasıl sağlayabilirim?

Oct 08 2020

Bir tarayıcı kullanmam gereken ve sadece 5 giriş miktarına sahip olabileceğim bir kasa oluşturuyorum. Aynı zamanda hst içermelidir ve bu, yalnızca bir miktardan sonra veya önce bir "h" bulunmasıdır. Sorum şu: Program, bir miktarın önüne veya arkasına "h" koyduğumu nasıl anlayabilir? Bu sadece bir dizgi değişkeni kullanılarak yapılmış gibi görünüyor, peki bunu nasıl başarabilirim? Girişleri bir dizide saklamam gerekiyor ve bu yüzden onu çalıştırdım.

Kodum:

 // 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();
    }
  }
} 

Yanıtlar

1 Hades Oct 08 2020 at 16:01

Aşağıdaki kod, kullanıcı girişini 5 kez sorar ve yalnızca geçerli değerler Dizide yer alır, Vald değerleri, başında veya sonunda 'h' olan değerlerdir ve yalnızca bir kez oluşmalıdır. yani, hem başlangıçta hem de sonda 'h' veya birden fazla geçersizdir.

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]);
        }
    }
}

girdi ve sonuç

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