Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Улучшение кода Java

Алексей Пахомов Ученик (11), закрыт 1 год назад
Это маленькая консольная программа:
 static void taskDisplay(int taskNumber, HashMap problemsAndAnswers){ 
System.out.println(problemsAndAnswers.get(taskNumber));
}

static void creatingTasks(HashMap problemsAndAnswers){
problemsAndAnswers.put(1, "Напишите программу, которая выводит на экран строку \"Hello world!\"");
problemsAndAnswers.put(2, "Закомментируйте ненужные строки так, чтобы в выводе получилось:\n" +
"\"// - Это комментарий) Это не сложно\"");
problemsAndAnswers.put(3, "Напишите программу, которая выведет на экран \"Hello Programming!\" (без кавычек) на 2 строках, по слову на каждой (см. пример вывода)");
problemsAndAnswers.put(4, """
Закомментируйте ненужные строки так, что бы в выводе получилось:
Я прекрасно понимаю разницу между System.out.println()
и System.out.print(). А ты?""");
}

static void clearConsole(){
for(int i = 0; i < 5; i++){
System.out.println();
}
}

public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
HashMap problemsAndAnswers = new HashMap<>();
creatingTasks(problemsAndAnswers);
System.out.println("В этом блоке 4 задачи!");

while (true){
int taskNumber = scan.nextInt();
scan.nextLine();
if (taskNumber >= 1 && taskNumber <= 4) {
switch (taskNumber) {
case 1:
taskDisplay(1, problemsAndAnswers);
scan.nextLine();
getSolution1();
break;
case 2:
taskDisplay(2, problemsAndAnswers);
scan.nextLine();
getSolution2();
break;
case 3:
taskDisplay(3, problemsAndAnswers);
scan.nextLine();
getSolution3();
break;
case 4:
taskDisplay(4, problemsAndAnswers);
scan.nextLine();
getSolution4();
break;
}
scan.nextLine();
clearConsole();
} else {
break;
}
}

}
static void getSolution1(){
System.out.println("Hello world");
}

static void getSolution2(){
//System.out.println("# - Это комментарий) Стоп, это не тот язык");
System.out.println("// - Это комментарий) Это не сложно");
/*System.out.println("// - Это не комментарий) Это не сложно");
System.out.println("// - Это комментарий) Это сложно");
System.out.println("// - Это не комментарий) Это не сложно");
System.out.println("можно даже попробовать многострочный комментарий");*/
}

static void getSolution3(){
System.out.println("Hello\nProgramming!");
}
static void getSolution4(){
//System.out.println("Я прекрасно понимаю разницу ");
System.out.print("Я прекрасно понимаю разницу ");
System.out.println("между System.out.println()");
//System.out.print("между System.out.println()");
//System.out.println("и System.out.print(). ");
System.out.print("и System.out.print(). ");
System.out.println("А ты?");
//System.out.print("А ты?");
}
Как можно улучшить этот код?
Лучший ответ
S.H.I. Оракул (74230) 1 год назад
 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' для выхода.");
}
}
}
Остальные ответы
Bukinist56   Мастер (1565) 1 год назад
 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');
}
}
}
Александр Искусственный Интеллект (309723) 1 год назад
это не программа...
Алексей ПахомовУченик (11) 1 год назад
Программа – это набор инструкций, написанных на языке программирования, которые выполняют определенную задачу на компьютере или другом устройстве.

То, что это фигня - факт, но по определению это является программой
Похожие вопросы