PRAIT
@PRAIT

Лаконичность и правильность кода в Java. В какой момент стоит объявлять переменные в коде?

Привет ребята, стоит обычная легенькая задача. Нужно написать код на Java который будет выводить в консоль Имя, отчество, год, рождения = Имя, возраст.
Но вот задался таким вопросом, есть два варианта которые мне известны по которым я могу реализовать затею.
1. Это прописать сразу все значения как в этом варианте, затем прописывать их повторно.
package test;
import java.util.Scanner;
public class Test {
  public static void main(String[] args) {
    Scanner tu = new Scanner(System.in);
    String name;
    String surName;
    int yearBorn;
    int yearNow;
    System.out.println("Ваше имя:");
    name = tu.nextLine();
    System.out.println("Вашe отчество:");
    surName = tu.nextLine();
    System.out.println("Какой сейчас год?");
    yearBorn = tu.nextInt();
    System.out.println("В каком году вы родились?");
    yearNow = tu.nextInt();
    System.out.println("Здравствуйте "+name+" "+surName+"!");
    System.out.println("Ваш возраст "+(yearBorn-yearNow)+"");
  }
}


Или же в этом варианте.
package test;
import java.util.Scanner;
public class Test1 {
  public static void main(String[] args) {
    System.out.println("Ваше имя:");
    String name = new Scanner(System.in).nextLine();
    System.out.println("Ваше отчество");
    String surName = new Scanner(System.in).nextLine();
    System.out.println("Какой сейчас год?");
    int yearBorn = new Scanner(System.in).nextInt();
    System.out.println("В каком году вы родились?");
    int yearNow = new Scanner(System.in).nextInt();
    System.out.println("Здравствуйте "+name+""+surName+"!");
    System.out.println("Ваш возраст "+(yearBorn-yearNow)+"");
  }
}


Я понимаю что вопрос слегка глупый и реализовать можно и так и так но, всё же хотел бы узнать как лучше писать, по первому или второму варианту? Спасибо!
  • Вопрос задан
  • 543 просмотра
Решения вопроса 2
@Iloveski
Ни так, ни так. Сканер создаёте в начале 1 раз. А переменные лучше объявлять ближе к месту использования и сразу же присваивать им значения используя 1 и тот же сканер.
Ответ написан
@distrik
Programador
Как написали ранее, сканером стоит пользоваться одним, и его стоит закрывать

public static void main(String[] args) {
    try(Requester requester = new Requester()) {
      String name = requester.requestLine("Введите ваше имя");
      String surName = requester.requestLine("Введите вашу фамилию");
      System.out.println(String.format("Здравствуйте, %s %s!", name, surName));

      String dish = requester.requestLine("Ваше любимое блюдо?");
      System.out.println(String.format("О, %s! Мне это тоже нравится!", dish));
    }
  }

  private static class Requester implements AutoCloseable {
    private final Scanner scanner;

    private Requester() {
      this.scanner = new Scanner(System.in);
    }

    private String requestLine(String requestMessage) {
      System.out.println(requestMessage);
      return scanner.nextLine();
    }

    @Override
    public void close() {
      scanner.close();
    }
  }
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы