Конструктор без аргументов
Так что эта ситуация немного расстраивает меня, потому что мой онлайн-учитель предпочитает, чтобы мы самостоятельно самостоятельно изучали уроки онлайн, и везде, куда бы я ни посмотрел, я до сих пор не могу понять, как полностью использовать no-args
Ниже приведена программа, которую я создаю, однако, насколько я знаю, я не могу запустить ее без main, но всякий раз, когда я вхожу в main, она не запускает конструкцию no-args, и я просто в общем не знаю, где я портлю,
import java.util.Scanner;
public class Week07_Assignment {
Scanner input = new Scanner(System.in);
private double height = 1;
private double width=1;
private double h;
private double w;
public void createrectangle(){
System.out.println("Give me both the height and width of this rectangle");
height = heightgetter(height);
width = heightgetter(width);
area(height, width);
perimeter(height, width);
}
public double heightgetter(double a){
a = input.nextDouble();
return a;
}
public double widthgetter(double a){
a = input.nextDouble();
return a;
}
public void area(double a, double b){
double area = a * b;
System.out.println("This is the area: " +area);
}
public void perimeter(double a, double b){
double perimeter = 2 * (a + b);
System.out.println("This is the area: " +perimeter);
}
}
2 ответа
hoChay ответ правильный. В дополнение к его комментарию, вот один из способов разделить вашу логику на разные классы.
Начиная с нуля (и основываясь на вашем вопросе) вам нужно будет создать класс Rectangle
которые должны иметь только методы, которые касаются всего, что связано с прямоугольником, например, вычисление периметра или площади.
Затем вы должны создать класс, который занимается чтением ввода пользователя (хотя это довольно излишне для вашего задания), а именно InputReader
,
Не в последнюю очередь создайте свой Main
класс, который будет служить отправной точкой при выполнении вашего кода.
Прямоугольник
package assignment_07;
public class Rectangle {
private double height;
private double width;
private double area;
private double perimeter;
public Rectangle(double width, double height) {
this.width = width;
this.height = height;
}
public void create() {
area(this.height, this.width);
perimeter(this.height, this.width);
}
private double area(double width, double height) {
this.area = width * height;
return this.area;
}
private double perimeter(double width, double height) {
this.perimeter = 2 * (width + height);
return this.perimeter;
}
public double getPerimeter(){
return this.perimeter;
}
public double getArea(){
return this.area;
}
@Override
public String toString() {
return "Perimeter: " + this.perimeter + "\nArea: " + this.area;
}
}
InputReader
package assignment_07;
import java.util.Scanner;
public class InputReader {
private Scanner scanner;
public InputReader() {
scanner = new Scanner(System.in);
}
public double readDouble(){
return scanner.nextDouble();
}
}
Начальная точка (главная)
import assignment_07.InputReader;
import assignment_07.Rectangle;
public class Main {
public static void main(String[] args) {
InputReader inputReader = new InputReader();
// Get measurements from user
double width = inputReader.readDouble();
double height = inputReader.readDouble();
// Create rectangle
Rectangle rectangle = new Rectangle(width, height);
rectangle.create();
// Print
System.out.println(rectangle);
}
}
Обратите внимание, что InputReader
а также Rectangle
класс находится в отдельном пакете, чтобы сохранить любое соглашение об именах, которое требуется для вашего назначения.
Привет, как упомянул @BackSlash, вы можете использовать код ниже.
public static void main (String[] args)
{
Week07_Assignment object = new Week07_Assignment();
object.createrectangle();
}