enum Task {
TASK_1("Напишите программу, которая выводит на экран строку \"Hello world!\"") {
void solve() {
System.out.println("Hello world");
}
},
TASK_2("Закомментируйте ненужные строки так, чтобы в выводе получилось:\n" +
"\"// - Это комментарий) Это не сложно\"") {
void solve() {
//System.out.println("# - Это комментарий) Стоп, это не тот язык");
System.out.println("// - Это комментарий) Это не сложно");
/*System.out.println("// - Это не комментарий) Это не сложно");
System.out.println("// - Это комментарий) Это сложно");
System.out.println("// - Это не комментарий) Это не сложно");
System.out.println("можно даже попробовать многострочный комментарий");*/
}
},
// Определите остальные задачи здесь
;
private final String problem;
Task(String problem) {
this.problem = problem;
}
abstract void solve();
void display() {
System.out.println(problem);
}
}
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
while (true){
String input = scan.nextLine();
try {
int taskNumber = Integer.parseInt(input);
if (taskNumber >= 1 && taskNumber <= Task.values().length) {
Task task = Task.values()[taskNumber - 1];
task.display();
task.solve();
} else {
break;
}
} catch (NumberFormatException e) {
System.out.println("Пожалуйста, введите номер задачи или 'q' для выхода.");
}
}
}
public class Program {
private interface Task {
int getNumber();
String getProblem();
String getSolution();
}
private enum Tasks implements Task {
HELLO_WORLD(1) {
@Override
public String getProblem() {
return "Напишите программу, которая выводит на экран строку \"Hello world!\"";
}
@Override
public String getSolution() {
return "Hello world";
}
},
COMMENTS(2) {
@Override
public String getProblem() {
return """
Закомментируйте ненужные строки так, чтобы в выводе получилось:
"// - Это комментарий) Это не сложно"
""";
}
@Override
public String getSolution() {
return "// - Это комментарий) Это не сложно";
}
},
MULTILINE_OUTPUT(3) {
@Override
public String getProblem() {
return "Напишите программу, которая выведет на экран \"Hello Programming!\" (без кавычек) " +
"на 2 строках, по слову на каждой (см. пример вывода)";
}
@Override
public String getSolution() {
return """
Hello
Programming!
""";
}
},
OUTPUT_COMMENTS(4) {
@Override
public String getProblem() {
return """
Закомментируйте ненужные строки так, что бы в выводе получилось:
Я прекрасно понимаю разницу между System.out.println()
и System.out.print(). А ты?
""";
}
@Override
public String getSolution() {
return """
Я прекрасно понимаю разницу между System.out.println()
и System.out.print(). А ты?
""";
}
};
private static final Map tasksMap = Arrays.stream(values())
.collect(Collectors.toMap(Task::getNumber, Function.identity()));
private final int number;
Tasks(int number) {
this.number = number;
}
@Override
public int getNumber() {
return number;
}
public static Task getByNumber(int taskNumber) throws IllegalArgumentException {
Task task = tasksMap.get(taskNumber);
if (task == null) {
throw new IllegalArgumentException("Task not found");
}
return task;
}
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.printf("В этом блоке %d задачи!\n", Tasks.values().length);
while (true) {
int taskNumber = scanner.nextInt();
scanner.nextLine();
Task task;
try {
task = Tasks.getByNumber(taskNumber);
} catch (IllegalArgumentException e) {
return;
}
System.out.println(task.getProblem());
scanner.nextLine();
System.out.println(task.getSolution());
System.out.println('\n');
}
}
}