desislava_topuzakova

08. Letters Change Numbers

Nov 12th, 2021
1,576
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.91 KB | None | 0 0
  1. package TextProcessing_Exercise;
  2.  
  3. import java.util.Scanner;
  4.  
  5. public class LettersChangeNumbers_08 {
  6.     public static void main(String[] args) {
  7.         Scanner scanner = new Scanner(System.in);
  8.         String input = scanner.nextLine(); //"P34562Z q2576f   H456z"
  9.         String [] passwords = input.split("\\s+");
  10.         //["P34562Z", "q2576f", "H456z"]
  11.         double totalSum = 0; //общата сума от всички пароли
  12.         for (String password : passwords) {
  13.             //пресметнем стойността на числото
  14.             double modifiedNumber = getModifiedNumber(password);
  15.             //добавяме числото от паролата към сумата
  16.             totalSum += modifiedNumber;
  17.         }
  18.  
  19.         System.out.printf("%.2f", totalSum);
  20.     }
  21.  
  22.     private static double getModifiedNumber(String password) {
  23.         //{буква}{число}{буква} -> "P34562Z"
  24.         char firstLetter = password.charAt(0); //'P'
  25.         char secondLetter = password.charAt(password.length() - 1); //'Z'
  26.  
  27.         //първи начин:
  28.         StringBuilder builder = new StringBuilder(password); //"P34562Z"
  29.         double number = Double.parseDouble(builder.deleteCharAt(0).deleteCharAt(builder.length() - 1).toString());
  30.  
  31.         //втори начин:
  32.         //double number = Double.parseDouble(password.replace(firstLetter, ' ').replace(secondLetter, ' ').trim());
  33.  
  34.         //трети начин:
  35.         //double number = Double.parseDouble(password.substring(1, password.indexOf(secondLetter)));
  36.  
  37.         //проверка за първата буква
  38.         //главна -> аски кода >= 65 и <= 90
  39.         if (Character.isUpperCase(firstLetter)) {
  40.             //число = число / позицията на главната буква firstLetter в азбуката
  41.             int positionUpperLetter = (int)firstLetter - 64;
  42.             number /= positionUpperLetter;
  43.         }
  44.         //малка -> аски кода >= 97 и <= 122
  45.         else {
  46.             //число = число * позицията на малката буква firstLetter в азбуката
  47.             int positionLowerLetter = (int)firstLetter - 96;
  48.             number *= positionLowerLetter;
  49.         }
  50.  
  51.         //проверка за втората буква
  52.         if (Character.isUpperCase(secondLetter)) {
  53.             //число = число - позицията на главната буква secondLetter в азбуката
  54.             int positionUpperLetter = (int)secondLetter - 64;
  55.             number -= positionUpperLetter;
  56.         } else {
  57.             //число = число + позицията на малката буква secondLetter в азбуката
  58.             int positionLowerLetter = (int)secondLetter - 96;
  59.             number += positionLowerLetter;
  60.         }
  61.         return number;
  62.     }
  63. }
  64.  
Advertisement
Add Comment
Please, Sign In to add comment