Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
0 / 0 / 0
Регистрация: 02.02.2021
Сообщений: 11

Нужен метод нахождение ближайшего числа среди всех созданные объектов класса?

27.03.2021, 06:01. Показов 2702. Ответов 9

Студворк — интернет-сервис помощи студентам
Есть формула которая считает требуемый момент сопротивления (momentSoprotivleniya), и класс DvutavrB_Gost26020_83 в котором нужно проверить моменты сопротивления всех созданных объектов, сравнить с требуемым и вывести подобранный момент сопротивления в виде текста. У меня проблема со сравнением все объектов класса, прочел что для того что бы создать метод у всего класса он должен быть static, но тогда и переменные тоже должны быть static. А если так сделать, не получается создать разные объекты, они принимают значения одного из объектов. Помогите, как создать такой метод который я могу вызвать у всего класса, который сравнивает значения одного из параметров объекта и выводит ближайшее к требуемому.

Sechenie.java
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
public abstract class Sechenie {
    private String name;
    private double momentSoprotivleniya;
    private double momentInertsii;
    private double massa;
 
 
    public Sechenie (String name, double momentSoprotivleniya, double momentInertsii, double massa){
        this.name = name;
        this.momentSoprotivleniya = momentSoprotivleniya;
        this.momentInertsii = momentInertsii;
        this.massa = massa;
    }
 
    public Sechenie (){
 
    }
 
    public void setName(String name){
        this.name = name;
    }
 
    public void setMomentSoprotivleniya(double momentSoprotivleniya){
        this.momentSoprotivleniya = momentSoprotivleniya;
    }
 
    public void setMomentInertsii(double momentInertsii){
        this.momentInertsii = momentInertsii;
    }
 
    public void setMassa(int massa){
        this.massa = massa;
    }
 
    public String getName(){
        return name;
    }
 
    public double getMomentSoprotivleniya(){
        return momentSoprotivleniya;
    }
 
    public double getMomentInertsii() {
        return momentInertsii;
    }
 
    public double getMassa() {
        return massa;
    }
 
    public void infoSechenie(){
        System.out.println(name + " " + momentSoprotivleniya + " " + momentInertsii + " " + massa);
    }
 
}
Dvutavr.java
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
public abstract class Dvutavr extends Sechenie {
    public Dvutavr(String name, double momentSoprotivleniya, double momentInertsii, double massa) {
        super(name, momentSoprotivleniya, momentInertsii, massa);
    }
    public Dvutavr(){
    }
 
    @Override
    public void infoSechenie() {
        super.infoSechenie();
    }
 
}
DvutavrB_Gost26020_83.java
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class DvutavrB_Gost26020_83 extends Dvutavr{
 
    public DvutavrB_Gost26020_83(String name, double momentSoprotivleniya, double momentInertsii, double massa) {
        super(name, momentSoprotivleniya, momentInertsii, massa);
 
        DvutavrB_Gost26020_83 dvutavr10B1 = new DvutavrB_Gost26020_83("10Б1", 34.2, 17.1, 8.1);
 
        DvutavrB_Gost26020_83 dvutavr12B1 = new DvutavrB_Gost26020_83("12Б1", 43.8, 257.0, 8.7);
 
        DvutavrB_Gost26020_83 dvutavr12B2 = new DvutavrB_Gost26020_83("12Б2", 53.0, 318.0, 10.4);
 
        DvutavrB_Gost26020_83 dvutavr14B1 = new DvutavrB_Gost26020_83("14Б1", 63.3, 435.0, 10.5);
 
    }
   
}
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.03.2021, 06:01
Ответы с готовыми решениями:

Метод класса изменяет переменную для всех объектов сразу
Программа по предмету исследование операций, на тему "сетевое планирование управления". В общем, есть таблица, мы вводим к...

Нахождение в массиве максимального элемента среди всех нечетных
1)Нахождение в массиве максимального элемента среди всех нечетных элементов и его номера в массиве. 2)Определение суммы элементов от...

Перечисление всех объектов класса
Вечер добрый. Как можно реализовать метод, возвращающий имена всех свойств класса?

9
 Аватар для StepFather322
365 / 252 / 113
Регистрация: 07.10.2017
Сообщений: 1,330
27.03.2021, 13:50
а зачем ты переменные на тринслите пишешь? Писал бы уже на русском
0
 Аватар для Tavashi
1172 / 762 / 194
Регистрация: 21.05.2016
Сообщений: 1,858
27.03.2021, 17:39
Цитата Сообщение от AAliraion Посмотреть сообщение
и выводит ближайшее к требуемому.
Что означает ближайшее?
0
 Аватар для Aviz__
2755 / 2062 / 509
Регистрация: 17.02.2014
Сообщений: 9,491
27.03.2021, 17:39
AAliraion, довольно сложно понять, что тебе нужно!
как я понял, есть некоторые объекты описывающие некие физические величины, в некоем сечении. скажем объемы воды, в бочке, которые все время перемешиваются. и тебе нужно найти соседние объемы, ближайшие к заданному?
0
 Аватар для Tavashi
1172 / 762 / 194
Регистрация: 21.05.2016
Сообщений: 1,858
27.03.2021, 18:04
Цитата Сообщение от AAliraion Посмотреть сообщение
сравнивает значения одного из параметров объекта
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
public class DvutavrB_Gost26020_83 extends Dvutavr implements Comparable<DvutavrB_Gost26020_83> {
    private String name;
    private double momentSoprotivleniya;
    private double momentInertsii;
    private double massa;
    
    private static NavigableSet<DvutavrB_Gost26020_83> listOfAllObjects = new TreeSet<DvutavrB_Gost26020_83>();
 
    public DvutavrB_Gost26020_83(String name, double momentSoprotivleniya, double momentInertsii, double massa) {
        super(name, momentSoprotivleniya, momentInertsii, massa);
        this.name = name;
        this.momentSoprotivleniya = momentSoprotivleniya;
        this.momentInertsii = momentInertsii;
        this.massa = massa;
    }
    
    public void putIn(DvutavrB_Gost26020_83 obj) { // name method is awesome :)
        listOfAllObjects.add(obj);
    }
    
    public static DvutavrB_Gost26020_83 getClosestMomentSoprotivleniya(DvutavrB_Gost26020_83 closestValue) { // use this method as a sample for: momentInertsii, massa, etc;
        if (listOfAllObjects.ceiling(closestValue) == null) return listOfAllObjects.floor(closestValue);
        if (listOfAllObjects.floor(closestValue) == null) return listOfAllObjects.ceiling(closestValue);
        
        double distanceCeiling = listOfAllObjects.ceiling(closestValue).getMomentSoprotivleniya() - closestValue.getMomentSoprotivleniya();
        double distanceFloor = closestValue.getMomentSoprotivleniya() - listOfAllObjects.floor(closestValue).getMomentSoprotivleniya();
    
        return distanceCeiling > distanceFloor ? listOfAllObjects.floor(closestValue) : listOfAllObjects.ceiling(closestValue);
    }
    
    public double getMomentSoprotivleniya() {
        return momentSoprotivleniya;
    }
    
    @Override 
    public int compareTo(DvutavrB_Gost26020_83 o) { 
        return this.getMomentSoprotivleniya() < o.getMomentSoprotivleniya() ? -1 : 1;
    } 
}
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public static void main(String args[])
    {
        DvutavrB_Gost26020_83 dvutavr10B1 = new DvutavrB_Gost26020_83("10Б1", 34.2, 17.1, 8.1);
        dvutavr10B1.putIn(dvutavr10B1);
        
        DvutavrB_Gost26020_83 dvutavr12B1 = new DvutavrB_Gost26020_83("12Б1", 43.8, 257.0, 8.7);
        dvutavr10B1.putIn(dvutavr12B1);
 
        DvutavrB_Gost26020_83 dvutavr12B2 = new DvutavrB_Gost26020_83("12Б2", 53.0, 318.0, 10.4);
        dvutavr10B1.putIn(dvutavr12B2);
 
        DvutavrB_Gost26020_83 dvutavr14B1 = new DvutavrB_Gost26020_83("14Б1", 63.3, 435.0, 10.5);
        dvutavr10B1.putIn(dvutavr14B1);
        
        // --------------------
        
        DvutavrB_Gost26020_83 searchObj = new DvutavrB_Gost26020_83("Search", 39, 435.0, 10.5); // put your search values
        
        System.out.println(DvutavrB_Gost26020_83.getClosestMomentSoprotivleniya(searchObj) != null ?
                           DvutavrB_Gost26020_83.getClosestMomentSoprotivleniya(searchObj).getMomentSoprotivleniya() : 
                           "No results");
    }
1
0 / 0 / 0
Регистрация: 02.02.2021
Сообщений: 11
27.03.2021, 18:46  [ТС]
Добавлено через 1 минуту
Цитата Сообщение от Tavashi Посмотреть сообщение
Что означает ближайшее?
В формуле я рассчитываю требуемый момент сопротивления, допустим требуемое значение 50,1, значит метод должен вывести имя, и момент объекта класса DvutavrB_Gost26020_83. В данном случае ближайший момент это 53,0, значит метод выведет это значение и имя объекта "12Б2"

Добавлено через 53 секунды
Цитата Сообщение от Aviz__ Посмотреть сообщение
довольно сложно понять, что тебе нужно! как я понял, есть некоторые объекты описывающие некие физические величины, в некоем сечении. скажем объемы воды, в бочке, которые все время перемешиваются. и тебе нужно найти соседние объемы, ближайшие к заданному?
Допустим Я создал несколько бочек с разным объемом [30, 15, 65, 89], далее в формуле рассчитывается требуемое количество воды = 54. Значит метод должен проверить объемы бочек всех созданных объектов класса и вывести ближайшее значение, в данном случае 65.
0
 Аватар для Tavashi
1172 / 762 / 194
Регистрация: 21.05.2016
Сообщений: 1,858
27.03.2021, 19:47
Лучший ответ Сообщение было отмечено AAliraion как решение

Решение

Цитата Сообщение от AAliraion Посмотреть сообщение
В данном случае ближайший момент это 53,0, значит метод выведет это значение и имя объекта "12Б2"
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
public class DvutavrB_Gost26020_83 extends Dvutavr implements Comparable<DvutavrB_Gost26020_83> {
    private String name;
    private double momentSoprotivleniya;
    private double momentInertsii;
    private double massa;
    
    private static NavigableSet<DvutavrB_Gost26020_83> listOfAllObjects = new TreeSet<DvutavrB_Gost26020_83>();
 
    public DvutavrB_Gost26020_83(String name, double momentSoprotivleniya, double momentInertsii, double massa) {
        super(name, momentSoprotivleniya, momentInertsii, massa);
        this.name = name;
        this.momentSoprotivleniya = momentSoprotivleniya;
        this.momentInertsii = momentInertsii;
        this.massa = massa;
    }
    
    public void putIn(DvutavrB_Gost26020_83 obj) { // name method is awesome :)
        listOfAllObjects.add(obj);
    }
    
    public static DvutavrB_Gost26020_83 getClosestMomentSoprotivleniya(DvutavrB_Gost26020_83 closestValue) { // use this method as a sample for: momentInertsii, massa, etc;
        if (listOfAllObjects.ceiling(closestValue) == null) return listOfAllObjects.floor(closestValue);
        if (listOfAllObjects.floor(closestValue) == null) return listOfAllObjects.ceiling(closestValue);
        
        double distanceCeiling = listOfAllObjects.ceiling(closestValue).getMomentSoprotivleniya() - closestValue.getMomentSoprotivleniya();
        double distanceFloor = closestValue.getMomentSoprotivleniya() - listOfAllObjects.floor(closestValue).getMomentSoprotivleniya();
    
        return distanceCeiling > distanceFloor ? listOfAllObjects.floor(closestValue) : listOfAllObjects.ceiling(closestValue);
    }
    
    public double getMomentSoprotivleniya() {
        return momentSoprotivleniya;
    }
    
    public String getName() {
        return name;
    }
    
    @Override 
    public int compareTo(DvutavrB_Gost26020_83 o) { 
        return this.getMomentSoprotivleniya() < o.getMomentSoprotivleniya() ? -1 : 1;
    } 
}
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public static void main(String args[])
    {
        DvutavrB_Gost26020_83 dvutavr10B1 = new DvutavrB_Gost26020_83("10Б1", 34.2, 17.1, 8.1);
        dvutavr10B1.putIn(dvutavr10B1);
        
        DvutavrB_Gost26020_83 dvutavr12B1 = new DvutavrB_Gost26020_83("12Б1", 43.8, 257.0, 8.7);
        dvutavr10B1.putIn(dvutavr12B1);
 
        DvutavrB_Gost26020_83 dvutavr12B2 = new DvutavrB_Gost26020_83("12Б2", 53.0, 318.0, 10.4);
        dvutavr10B1.putIn(dvutavr12B2);
 
        DvutavrB_Gost26020_83 dvutavr14B1 = new DvutavrB_Gost26020_83("14Б1", 63.3, 435.0, 10.5);
        dvutavr10B1.putIn(dvutavr14B1);
        
        // --------------------
        
        DvutavrB_Gost26020_83 searchObj = new DvutavrB_Gost26020_83("Search", 50.1, 435.0, 10.5); // 50.1
        
        System.out.println("Name is: " + DvutavrB_Gost26020_83.getClosestMomentSoprotivleniya(searchObj).getName()
                           + "\nValue is: " + DvutavrB_Gost26020_83.getClosestMomentSoprotivleniya(searchObj).getMomentSoprotivleniya());
    }
Code
1
2
3
4
// output
 
Name is: 12Б2
Value is: 53.0
Добавлено через 11 минут
Или так:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
public class DvutavrB_Gost26020_83 extends Dvutavr implements Comparable<DvutavrB_Gost26020_83> {
    private String name;
    private double momentSoprotivleniya;
    private double momentInertsii;
    private double massa;
    
    private static NavigableSet<DvutavrB_Gost26020_83> listOfAllObjects = new TreeSet<DvutavrB_Gost26020_83>();
 
    public DvutavrB_Gost26020_83(String name, double momentSoprotivleniya, double momentInertsii, double massa) {
        super(name, momentSoprotivleniya, momentInertsii, massa);
        this.name = name;
        this.momentSoprotivleniya = momentSoprotivleniya;
        this.momentInertsii = momentInertsii;
        this.massa = massa;
    }
    
    public void putIn(DvutavrB_Gost26020_83 obj) { // name method is awesome :)
        listOfAllObjects.add(obj);
    }
    
    public static DvutavrB_Gost26020_83 checkMomentSoprotivleniya(DvutavrB_Gost26020_83 closestValue) { // use this method as a sample for: momentInertsii, massa, etc;
        if (listOfAllObjects.ceiling(closestValue) == null) return listOfAllObjects.floor(closestValue);
        if (listOfAllObjects.floor(closestValue) == null) return listOfAllObjects.ceiling(closestValue);
        
        double distanceCeiling = listOfAllObjects.ceiling(closestValue).getMomentSoprotivleniya() - closestValue.getMomentSoprotivleniya();
        double distanceFloor = closestValue.getMomentSoprotivleniya() - listOfAllObjects.floor(closestValue).getMomentSoprotivleniya();
    
        return distanceCeiling > distanceFloor ? listOfAllObjects.floor(closestValue) : listOfAllObjects.ceiling(closestValue);
    }
    
    
    public static String getClosestMomentSoprotivleniya(double closestValue) {
        DvutavrB_Gost26020_83 resultObj = checkMomentSoprotivleniya(new DvutavrB_Gost26020_83("Search", closestValue, 435.0, 10.5)); // 50.1;
        
        return "Name is " + resultObj.getName() + "\nValue is " + resultObj.getMomentSoprotivleniya();
    }
    
    public double getMomentSoprotivleniya() {
        return momentSoprotivleniya;
    }
    
    public String getName() {
        return name;
    }
    
    @Override 
    public int compareTo(DvutavrB_Gost26020_83 o) { 
        return this.getMomentSoprotivleniya() < o.getMomentSoprotivleniya() ? -1 : 1;
    } 
}
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public static void main(String args[])
    {
        DvutavrB_Gost26020_83 dvutavr10B1 = new DvutavrB_Gost26020_83("10Б1", 34.2, 17.1, 8.1);
        dvutavr10B1.putIn(dvutavr10B1);
        
        DvutavrB_Gost26020_83 dvutavr12B1 = new DvutavrB_Gost26020_83("12Б1", 43.8, 257.0, 8.7);
        dvutavr10B1.putIn(dvutavr12B1);
 
        DvutavrB_Gost26020_83 dvutavr12B2 = new DvutavrB_Gost26020_83("12Б2", 53.0, 318.0, 10.4);
        dvutavr10B1.putIn(dvutavr12B2);
 
        DvutavrB_Gost26020_83 dvutavr14B1 = new DvutavrB_Gost26020_83("14Б1", 63.3, 435.0, 10.5);
        dvutavr10B1.putIn(dvutavr14B1);
        
        // --------------------
        
        System.out.println(DvutavrB_Gost26020_83.getClosestMomentSoprotivleniya(50.1));
    }
1
 Аватар для Aviz__
2755 / 2062 / 509
Регистрация: 17.02.2014
Сообщений: 9,491
27.03.2021, 19:55
Цитата Сообщение от AAliraion Посмотреть сообщение
Значит метод должен проверить объемы бочек всех созданных объектов класса и вывести ближайшее значение, в данном случае 65.
ты не можешь найти минимальную разность между заданной величиной и текущей, скажем, перебираемых объектов из хранилища (массив, или коллекция)?!
0
0 / 0 / 0
Регистрация: 02.02.2021
Сообщений: 11
28.03.2021, 04:34  [ТС]
Цитата Сообщение от Aviz__ Посмотреть сообщение
ты не можешь найти минимальную разность между заданной величиной и текущей, скажем, перебираемых объектов из хранилища (массив, или коллекция)?!
Я не знаю как сделать метод который будет проверять все созданные объекты класса


Цитата Сообщение от Tavashi Посмотреть сообщение
Java
1
public static void main(String args[])
Спасибо! Я хочу что бы этот метод ClasName.getClosestMomentSoprotivleniya( ); можно было вывести в любом классе программы, подскажи как этого можно добиться?
0
 Аватар для Aviz__
2755 / 2062 / 509
Регистрация: 17.02.2014
Сообщений: 9,491
28.03.2021, 07:36
Цитата Сообщение от AAliraion Посмотреть сообщение
проверять все созданные объекты класса
создаешь их в массив или список. потом перебираешь их, в цикле, или стримом с вызовом нужных тебе методов. все!
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.03.2021, 07:36
Помогаю со студенческими работами здесь

Метод для массива объектов класса
Существует класс mybook, в котором автор, название книги и год издания являются полями данных. Есть три метода, два из которых служат для...

Метод сравнения объектов пользовательского класса
Нужно написать метод сравнения достаточно сложных объектов пользовательского класса - для сортировки массива этих объектов. Вижу, что...

Дополнительный метод сравнения объектов класса
Имеется класс для которого уже реализован интерфейс Comparable и перегружен метод compareTo. Сравниваются объекты лексикографически, а...

Нахождение максимального значения в массиве среди всех четных чисел
Работа с одномерными массивами Задание(Общее): Составить программу обработки одномерного массива заданного типа произвольной длины....

Нахождение всех совершенных чисел среди элементов целочисленного массива
Привет всем))) Помогите пожалуйста! Разработать программу для нахождения всех совершенных чисел среди элементов целочисленного...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
1С: Программный отбор элементов справочника Номенклатура по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор под наименованию группы (на. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника Сотрудники по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru