присвоить значение оператору println, чтобы его можно было использовать в любом месте файла - PullRequest
0 голосов
/ 08 января 2019

Мне нужно присвоить значение оператору println, чтобы я мог объявить его как переменную и затем использовать его в любом месте кода. Я хочу иметь возможность назначить значение для «результата» в println, однако я не знаю, как это сделать. Кто-нибудь знает, как присвоить этому значение, чтобы его можно было использовать где угодно? Я пробовал следующее, однако я получаю сообщение о том, что void не может быть преобразован в строку ...

Ответы [ 3 ]

0 голосов
/ 08 января 2019

Создайте Потребителя и передайте объект всякий раз, когда вы хотите напечатать объект.

Consumer consumer= System.out::println;
consumer.accept(5);

Обновлено

В вашем случае определите потребителя как:

public static int myHouseValue;
public static final Consumer CONSUMER= System.out::println;

и в любом месте и в любом классе вы можете использовать этого потребителя. просто включите этот статический член. и передайте объект, который вы хотите напечатать.

CONSUMER.accept(5);
CONSUMER.accept("String");
CONSUMER.accept(new Object());
CONSUMER.accept(myHouseValue);

Ваш код (обновлен):

public class Weka {

  public static int Lotsize;
  public static int Bedrooms;
  public static int LocalSchools;
  public static int Age;
  public static int Garages;
  public static int Bathrooms;


  public static double myHouseValue = 0d;// here is the default value zero
  public static final Consumer CONSUMER = System.out::println;

  public static void main(String[] args) throws Exception {

    System.out.println("Server up and running");



      . . .


      your code


      . . . 



    // donot declare myHouseValue again , its already defined wher we set it to default value. only use here
    myHouseValue = (coef[0] * Lotsize) +
        (coef[1] * Bedrooms) +
        (coef[2] * LocalSchools) +
        (coef[3] * Age) +
        (coef[4] * Garages) +
        (coef[5] * Bathrooms) +
        coef[7];

    CONSUMER.accept(myHouseValue);
0 голосов
/ 08 января 2019

Вы, вероятно, можете написать его как лямбда-выражение JAVA, например:

Consumer<String> print = it-> System.out.println(it); 

Всякий раз, когда вы хотите запустить, вы можете запустить его так:

print.accept("hello");

Br

Тим

0 голосов
/ 08 января 2019

Вы можете определить метод:

private void print(String value) {
    System.out.println(value);
}

Это можно вызвать из любой точки вашего класса.

Если вы хотите повторно использовать эту функциональность в разных классах, вы можете создать для нее отдельный класс:

public class Printer {
    public void print(String value) {
        System.out.println(value);
    }
}

Затем вы можете добавить его в качестве зависимости в классе, который хотите вывести:

public class MyApp {

    private Printer printer;

    public MyApp(Printer printer) {
        this.printer = printer;
    }

    public void doSomething() {
        printer.print("Hello world");
    }
}
...