Создание класса с объектом ООП

198
30 декабря 2018, 21:10

Начал изучать ООП с Java, на первом практическом задании столкнулся с проблемой, которую пока не могу решить. Есть идея и понимание того, как в теории надо это сделать - но реализовать на практике не получается.

Код задания:

import java.util.Scanner;
public class Things {
    public static void main(String args[]) {
        String characterString;
        Scanner reader =  new Scanner(System.in);        
        PrintingClass printer = new PrintingClass();
        System.out.print("Type in the character string for printing: ");
        characterString = reader.nextLine();
        printer.Print(characterString);
    }
}
//  Write the missing class here
//  Class is written in the text box below.

Нужно написать новый class, который позволит сделать следующий вывод:

Type in the character string for printing: Matt Jackson is here

Matt Jackson is here

Понимаю, что нужно создать класс

public class printingClass

И внутри него должен быть объект

printer

Взаимодействие с которым должно как-то вызывать функцию

System.out.print 

Которая содержит введенный пользователем текст.

Заранее спасибо за помощь!

Answer 1

И внутри него должен быть объект printer

Это не совсем корректная формулировка. Вас просят описать новый класс, который в себе содержит определенный метод.

Давай разберем исходный код:

import java.util.Scanner;
public class Things {
    public static void main(String args[]) {
        String characterString; // Объявляем переменную characterString типа String  
        Scanner reader =  new Scanner(System.in); // Создаем объект, который позволит считать строку, введенную в консоли   
        PrintingClass printer = new PrintingClass(); // Создаем объект нашего класса (используется дефолтный конструктор без параметров)
        System.out.print("Type in the character string for printing: "); // Выводим строку в консоль
        characterString = reader.nextLine(); // Считываем строку из консоли 
        printer.Print(characterString); // Выводим значение переменной characterString  на консоль 
    }
}

Решение, к примеру, может быть таким:

public class PrintingClass { // описываем структуру класса 
    public void Print(String str) { // описание нашего метода 
        System.out.println(str);
    }
}

Или такой вариант:

public class PrintingClass {
    public PrintingClass() {
    }
    public void Print(String str) {
        System.out.println(str);
    }
}

По факту оба решения выше одинаковы. Прошу заметить, если вы явно не определяете ни один конструктор, то язык за вас создаст конструктор по-умолчанию (без параметров). Если же вы определили хотя бы один конструктор, то конструктор по умолчанию создан не будет.

В вашем примере метод у класса PrintingClass начинается с большой буквы, так именовать в языке не принято. Выдержка из конвенции о наименовании на языке Java:

Methods should be verbs, in mixed case with the first letter lowercase, with the first letter of each internal word capitalized.

Вольный перевод: Методы описывают действие. Название начинается со строчной первой буквы, если в имени несколько слов, каждое следующее слово пишется с заглавной буквы слитно.

Подробнее о правилах наименования можете почитать здесь: Naming Conventions.

Удачи в изучении языка!

Answer 2

Так попробуйте

public class Main {
    public static void main(String[] args) {
        Scanner vvod = new Scanner(System.in);  //создаём магию ввода
        int var_num;  //создаём переменную типа int
        System.out.print("Введите число: ");  //выводим на консоль сообщение о вводе
        var_num = vvod.nextInt();  //вводим значение в созданную переменную
        System.out.print("Ваше число: " + var_num);  //выводим отформатированное сообщение,
        //содержащее значение введённой переменной
    }
}
READ ALSO
Как рисовать параллельно двух девайсах? [закрыт]

Как рисовать параллельно двух девайсах? [закрыт]

Я создал программу Paint, который можно рисовать что угодно! Теперь задача такая, когда я буду рисовать на одном девайсе, на втором девайсе должен...

143
Почему forEach работает не правильно? [дубликат]

Почему forEach работает не правильно? [дубликат]

На данный вопрос уже ответили:

170
Функции. Массив аргументов [дубликат]

Функции. Массив аргументов [дубликат]

На данный вопрос уже ответили:

193