Как сделать программу для проверки экземпляра буквы на java?

#java #arrays

#java #массивы

Вопрос:

Я создаю кассовый аппарат, в котором мне приходится использовать сканер, и у меня может быть только 5 входных сумм. Он также должен включать hst, и это только при наличии «h» после или перед суммой. Мой вопрос в том, как программа распознает, что я поставил «h» после или перед суммой? Похоже, это делается только с использованием строковой переменной, так как же мне это сделать? Мне нужно хранить входные данные в массиве, и поэтому я заставил это работать.

Мой код:

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

Комментарии:

1. «Похоже, это делается только с использованием строковой переменной, так как же мне это сделать?» Затем получите строку через nextLine() , чтобы вы могли проверить первый / последний символ на ‘h’. После извлечения числовой части используйте parseDouble для преобразования ее в числовой тип данных. Вас уже научили методам обработки строк?

2. Да, я был

3. Хорошо, итак, после использования кода, подобного Hades, опубликованного ниже, вам понадобится String.substring() , чтобы получить только числовую часть, чтобы вы могли передать ее parseDouble() .

4. Могу я спросить, что такое «hst»?

5. «arrayIndex» — это просто переменная … точно такая же, как «i» в вашем исходном сообщении. «arrayasList» используется только для отображения содержимого массива. Вы бы не использовали это в своей окончательной программе…

Ответ №1:

приведенный ниже код запрашивает ввод пользователя 5 раз, и в массиве будут только допустимые значения, значения Vald — это значения с ‘h’ в начале или конце и должны встречаться только один раз. т. е. значение ‘h’ в конце и начале или более одного раза недопустимо.

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

ввод и результат

 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
  

Комментарии:

1. Мне нужно сохранить входные данные в массиве

2. @User234 Затем сделайте это. Оберните код под экземпляром сканера в цикл, чтобы получить несколько значений, а затем поместите извлеченные значения в массив.

3. Обратите внимание на тонкую разницу в объявлениях ваших массивов. В оригинале double для создания массива ПРИМИТИВНЫХ двойников использовались строчные буквы. Код Hades использует верхний регистр Double для создания массива двойных оболочек. В примере внизу 2-й и 3-й входные данные недопустимы (нет «h» в начале или конце), поэтому в массив в этих позициях не было введено никакого значения. Для этих индексов a null будет присутствовать в массиве, поскольку Double является ССЫЛОЧНЫМ типом. Это различие трудно понять большинству новичков…

4. @Idle_Mind да!! У вас орлиный глаз и спасибо за объяснение 1 за объяснение osam 🙂