Можно ли отправить переменные, которые мне нужны в методе, через конструктор?
У меня 2 файла:
public class Recording {
public int height;
public int diameter;
public int weight;
public Recording (int height, int diameter, int weight) {
this.height = height;
this.diameter = diameter;
this.weight = weight;
}
}
а также
public class Leergut {
public static void main(String[] args) {
int height;
int diameter;
int weight;
int code;
int pfand;
while (code != -1) {
Recording r = new Recording(System.in.read(), System.in.read(), System.in.read());
classify(r);
} else {
// to be continued
}
}
public static int classify(Recording r) {
if (height == 250 && diameter = 67 && weight == 365) { code = 0; return code;}
else { code = -1; return code ;}
}
Я ищу способ передать высоту, диаметр и вес (как объявлено в классе записи) методу "classify".
Или мне нужно снова объявить переменные внутри метода, чтобы он работал?
PS: Для тех, кто пытался помочь мне в моей первой беседе, я решил сделать новый пост, так как он предоставит лучший обзор.




Вы можете создать методы получения и установки для переменных высоты, диаметра и ширины в записи. Затем вызовите их в своем методе классификации.
Пример:
// Methods in Recording.java
public int getWidth() {
return this.width;
}
public int getDiameter()
return this.diameter;
}
public int getHeight() {
return this.height;
}
А в методе classify просто получите значения из записи:
public static int classify(Recording r) {
if (r.getHeight() == 250 && r.getDiameter() == 67 && r.getWidth() == 365) {
// Do whatever
}
}
Это предложение
Вы должны инициализировать переменные, а затем создать 3 метода, которые возвращают соответствующие значения.
public class Recording {
private int height = 0;
private int diameter = 0;
private int weight = 0;
public Recording (int height, int diameter, int weight) {
this.height = height;
this.diameter = diameter;
this.weight = weight;
}
public int getHeight()
{
return height;
}
public int getDiameter()
{
return diameter;
}
public int getWeight()
{
return weight;
}
}
public static int classify(Recording r) {
if (r.getHeight() == 250 && r.getDiameter() == 67 && r.getWeight() == 365) { code = 0; return code;}
else { code = -1; return code ;}
}
нет необходимости использовать геттеры и сеттеры, но настоятельно рекомендуется, потому что они считаются чистым кодом в java.
@tung Вот почему я сказал, что это предложение
Чтобы передать переменные методу, вы можете сделать это так:
public void myMethod(int variable1, boolean variable2) {
//method body
}
Назвать это можно так:
public static void main(String[] args){
int a = 2;
boolean f = false;
myMethod(a,f);
// If static do:
// ClassThatHasTheStaticMethod.myMethod(a,f);
}
В качестве примечания:
while (code != -1) {
Recording r = new Recording(System.in.read(), System.in.read(), System.in.read());
classify(r);
} else {
// to be continued
}
Вы не можете поместить оператор else после блока кода while, так как это приведет к ошибке компиляции.
ты имеешь ввиду это?
public static int classify(Recording r) {
if (r.height == 250 && r.diameter = 67 && r.weight == 365) {
code = 0; return code;
}
else {
code = -1; return code ;
}
Ваш класс записи и его поля являются общедоступными, что означает, что вы можете получить к ним доступ, просто назвав их имя, точку и поле, которое вы хотите получить.
Пробовал, тоже отлично смотрится! Получение исключения IOException для «Запись r = новая запись (System.in.read (), System.in.read (), System.in.read ());» хоть. Должен быть способ считывать значения int в объект.
Пробовал новый подход. Снова объявил переменные внутри метода (не могу понять, как вызвать функцию Setter с помощью "System.in.read ()"
public static int classify(Recording r) {
int height = System.in.read();
int diameter = System.in.read();
int weight = System.in.read();
if (height == 250 && diameter == 67 && weight == 365) {int code = 0; return code;}
else { int code = -1; return code ;}
}
Однако теперь мой объект «Запись r» сообщает мне, что переменные больше не могут быть разрешены. А ТАКЖЕ System.in.read (); для трех переменных внутри метода генерируется какое-то исключение IOException.
Проголосовали против, поскольку вопрос демонстрирует отсутствие понимания основных функций языка. Вы должны прочитать несколько руководств по Java или книг по Java для начинающих.