Advertisement
desislava_topuzakova

08. Letters Change Numbers

Nov 15th, 2022
302
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.46 KB | None | 0 0
  1. package text_processing;
  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(); // "A12b s17G"
  9. String [] codes = input.split("\\s+"); //["A12b", "s17G"]
  10.  
  11. double totalSum = 0; //сума от модифицираните числа на всеки код
  12. for (String code : codes) {
  13. //код: {буква}{число}{буква}
  14. //модифицирам си числото в кода спрямо буквите
  15. double modifiedNumber = getModifiedNumber(code);
  16. //добавям модифицираното число към сумата
  17. totalSum += modifiedNumber;
  18. }
  19.  
  20. System.out.printf("%.2f", totalSum);
  21.  
  22. }
  23. //метод, който връща модифицираното число от кода
  24. private static double getModifiedNumber(String code) {
  25. //код: "{буква}{число}{буква}"
  26. //"A12b"
  27. char firstLetter = code.charAt(0); //'A'
  28. char secondLetter = code.charAt(code.length() - 1); //'b'
  29. double number = Double.parseDouble(code.replace(firstLetter, ' ') //" 12b"
  30. .replace(secondLetter, ' ') //" 12 "
  31. .trim()); //"12" -> 12.0
  32.  
  33. //1. проверка за firstLetter -> главна или малка
  34. if (Character.isUpperCase(firstLetter)) {
  35. //главна -> ascii e [65; 90]
  36. int positionUpperLetter = (int) firstLetter - 64;
  37. number /= positionUpperLetter;
  38. } else {
  39. //малка -> ascii е [97; 120]
  40. int positionLowerLetter = (int) firstLetter - 96;
  41. number *= positionLowerLetter;
  42. }
  43.  
  44. //2. проверка за secondLetter -> главна или малка
  45. if (Character.isUpperCase(secondLetter)) {
  46. //главна -> ascii e [65; 90]
  47. int positionUpperLetter = (int) secondLetter - 64;
  48. number -= positionUpperLetter;
  49. } else {
  50. //малка -> ascii е [97; 120]
  51. int positionLowerLetter = (int) secondLetter - 96;
  52. number += positionLowerLetter;
  53. }
  54.  
  55. //връщам модифицираното число спрямо промените от буквите
  56. return number;
  57.  
  58. }
  59. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement