Advertisement
dxvmxnd

Untitled

Mar 2nd, 2024
13
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.99 KB | None | 0 0
  1. import java.util.Scanner;
  2. import java.io.*;
  3.  
  4. public class Main {
  5. private static final Scanner scanner = new Scanner(System.in);
  6.  
  7.  
  8. public static void main (String[] args) {
  9. boolean isFromFile;
  10. String str;
  11. boolean[] errors;
  12. boolean isCorrect;
  13.  
  14. isFromFile = false;
  15. errors = new boolean[2];
  16.  
  17. outputTask();
  18. isFromFile = chooseInput();
  19. str = inputString(isFromFile);
  20. isCorrect = checkForTrue(str, errors);
  21. outputAnswer(isCorrect, errors);
  22.  
  23. scanner.close();
  24.  
  25. }
  26.  
  27. public static String outputPath() {
  28. String path;
  29. boolean isIncorrect;
  30.  
  31. do {
  32. isIncorrect = false;
  33. System.out.println("\nВведите путь к файлу для вывода: ");
  34. System.out.println();
  35. path = scanner.nextLine();
  36.  
  37. File file = new File(path);
  38. if (!file.exists()) {
  39. System.out.println("По указанном пути файл не найден.");
  40. isIncorrect = true;
  41. } else if (!getExtension(path).equals("txt")) {
  42. System.err.println("Ошибка, неправильный тип файла!");
  43. isIncorrect = true;
  44. }
  45. } while (isIncorrect);
  46. return path;
  47. }
  48.  
  49. public static void outputAnswerInFile(boolean isCorrect, boolean[] errors) {
  50. String path;
  51. boolean isIncorrect;
  52.  
  53. path = outputPath();
  54. do {
  55. isIncorrect = false;
  56. try (FileWriter writer = new FileWriter(path, true)) {
  57. if(isCorrect) {
  58. writer.write("Слово является идентификатором!");
  59. }
  60. else {
  61. writer.write("Слово не является идентификатором!");
  62. if(errors[0]) {
  63. writer.write("Слово не начинается с английской буквы либо нижнего подчеркивания!");
  64. }
  65. if(errors[1]) {
  66. writer.write("Слово содержит в себе буквы, не являющиеся цифрами, латинскими буквами и нижним подчеркиванием!");
  67. }
  68. }
  69. } catch (IOException ioException) {
  70. System.err.println("Ошибка при записи в файл");
  71. isIncorrect = true;
  72. }
  73. } while (isIncorrect);
  74. System.out.println("Данные записаны в файл.");
  75. }
  76.  
  77. public static void outputAnswer(boolean isCorrect, boolean[] errors) {
  78. if(isCorrect) {
  79. System.out.println("Слово является идентификатором!");
  80. }
  81. else {
  82. System.out.println("Слово не является идентификатором!");
  83. if(errors[0]) {
  84. System.out.println("Слово не начинается с английской буквы либо нижнего подчеркивания!");
  85. }
  86. if(errors[1]) {
  87. System.out.println("Слово содержит в себе буквы, не являющиеся цифрами, латинскими буквами и нижним подчеркиванием!");
  88. }
  89. }
  90.  
  91. outputAnswerInFile(isCorrect, errors);
  92. }
  93. public static boolean checkForFirstLetter(char str, boolean error) {
  94. error = !(((str > 'a') && (str < 'z')) || ((str > 'A') && (str < 'Z')) || (str == '_'));
  95.  
  96. return error;
  97. }
  98.  
  99. public static boolean checkForLetters(String str, boolean error) {
  100. error = false;
  101. for (int i = 0; i < str.length(); i++) {
  102. if (!(((str.charAt(i) > 'a') && (str.charAt(i) < 'z')) || ((str.charAt(i) > 'A') && (str.charAt(i) < 'Z')) || (str.charAt(i) == '_') || ((str.charAt(i) > '0') && (str.charAt(i) < '9')))) {
  103. error = true;
  104. }
  105. }
  106.  
  107. return error;
  108. }
  109.  
  110. public static boolean checkForTrue(String str, boolean[] errors) {
  111. errors[0] = false;
  112. errors[1] = false;
  113.  
  114. errors[0] = checkForFirstLetter(str.charAt(0), errors[0]);
  115. errors[1] = checkForLetters(str, errors[1]);
  116.  
  117. return (!(errors[1] || errors[0]));
  118. }
  119.  
  120. public static void outputTask() {
  121. System.out.println("Данная программа проверяет, является ли заданная строка идентификатором");
  122. }
  123.  
  124. public static boolean chooseInput() {
  125. int num;
  126. boolean isNotCorrect;
  127.  
  128. num = 0;
  129. do {
  130. isNotCorrect = false;
  131. System.out.println("Выберите, откуда будут вводиться данные: 0, если с консоли; 1, если с файла:");
  132. try {
  133. num = Integer.parseInt(scanner.nextLine());
  134. } catch(NumberFormatException exception) {
  135. isNotCorrect = true;
  136. }
  137. if(isNotCorrect || ((num != 0) && (num != 1))) {
  138. isNotCorrect = true;
  139. System.out.println("Ошибка ввода! Повторите попытку.");
  140. }
  141. } while(isNotCorrect);
  142.  
  143. return (num == 1);
  144. }
  145.  
  146. public static String inputString(boolean isFromFile) {
  147. String str;
  148.  
  149. str = "";
  150.  
  151. if(isFromFile) {
  152. str = inputFromFile(str);
  153. }
  154. else {
  155. str = inputFromConsole(str);
  156. }
  157.  
  158. return str;
  159. }
  160.  
  161. public static String inputFromFile(String str) {
  162. String path;
  163.  
  164. path = pathChoice();
  165. str = "";
  166.  
  167. System.out.println("Ввод строки...");
  168.  
  169. try (BufferedReader reader = new BufferedReader(new FileReader(path))) {
  170. str = (reader.readLine());
  171. } catch (IOException ioException) {
  172. System.err.println("Неверный ввод данных! Измените входные данные и перезапустите программу.");
  173. }
  174.  
  175. if(str.contains(" ") || (str.length() < 1)) {
  176. System.out.println("Ошибка ввода! Введите строку с клавиатур.");
  177. str = inputFromConsole(str);
  178. }
  179.  
  180. return str;
  181. }
  182.  
  183. public static String inputFromConsole(String str) {
  184. boolean isNotCorrect;
  185.  
  186. str = "";
  187. do {
  188. isNotCorrect = false;
  189. System.out.println("Введите строку:");
  190. str = scanner.nextLine();
  191. if(str.contains(" ") || (str.length() < 1)) {
  192. System.out.println("Ошибка ввода! Повторите попытку.");
  193. isNotCorrect = true;
  194. }
  195. } while(isNotCorrect);
  196.  
  197. return str;
  198. }
  199. public static String pathChoice() {
  200. String path;
  201. boolean isIncorrect;
  202.  
  203. do {
  204. isIncorrect = false;
  205. System.out.println("Введите путь к файлу: ");
  206. path = scanner.nextLine();
  207.  
  208. File file = new File(path);
  209. if (!file.exists()) {
  210. System.out.println("По указанном пути файл не найден.");
  211. isIncorrect = true;
  212. } else if (!getExtension(path).equals("txt")) {
  213. System.err.println("Ошибка, неправильный тип файла!");
  214. isIncorrect = true;
  215. }
  216. } while (isIncorrect);
  217.  
  218. return path;
  219.  
  220. }
  221. public static String getExtension(String path) {
  222. int pos = path.lastIndexOf('.');
  223. if (pos <= 0) {
  224. return "";
  225. }
  226. return path.substring(pos + 1);
  227. }
  228. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement