Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 29.06.2013
Сообщений: 88
1

Создание объекта

29.06.2013, 14:28. Показов 860. Ответов 13
Метки нет (Все метки)

Здравствуйте! Такая проблема.
Есть некий конструктор
public Debet(long sumProceed,int dateIncome,long sumIncome, int dateLoan,
long sumLoan,long neededSumLoan,long realSumLoan,long debtSum,long allMoney)
Как мне сделать так, чтобы при вводе с клавиатуры данных long sumProceed,int dateIncome,long sumIncome... и т.д., создавался новый объект и где-то хранился?
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.06.2013, 14:28
Ответы с готовыми решениями:

Создание объекта из другого объекта
Добрый день. Теорию знаю плохо, но работаю над этим. У меня есть класс Компания и есть класс...

Создание объекта
Сегодня увидела такой фрагмент кода и не очень поняла, не могли бы вы объяснить, что это? A x =...

Создание объекта
Добрый день! Видела два способа создания объекта. class A{...} ... public static void...

Создание экземпляра объекта
Добрый день. Создал при помощи Эклипс класс: public class Car { public final static String...

13
2580 / 2253 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
29.06.2013, 14:51 2
https://www.cyberforum.ru/blog... og697.html
0
98 / 98 / 12
Регистрация: 05.05.2013
Сообщений: 1,208
29.06.2013, 15:00 3
Вот. В конце показывает где в памяти хранится объект если тебе это поможет)))
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
import java.util.Scanner;
 
public class Debet {
 
    public Debet(
            long sumProceed,
            int  dateIncome,
            long sumIncome, 
            int dateLoan,
            long sumLoan,
            long neededSumLoan,
            long realSumLoan,
            long debtSum,
            long allMoney) 
    {
        
    }
 public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.println("Input params:");
        System.out.print("long sumProceed: ");
        long q = in.nextLong();
        System.out.print("int  dateIncome: ");
        int w = in.nextInt();
        System.out.print("long sumIncome: ");
        long e = in.nextLong();
        System.out.print("int dateLoan: ");
        int r = in.nextInt();
        System.out.print("long sumLoan: ");
        long t = in.nextLong();
        System.out.print("long neededSumLoan: ");
        long y = in.nextLong();
        System.out.print("long realSumLoan: ");
        long u = in.nextLong();
        System.out.print("long debtSum: ");
        long i = in.nextLong();
        System.out.print("long allMoney: ");
        long o = in.nextLong();
        Debet debet = new Debet(q, w, e, r, t, y, u, i, o);
        System.out.println(debet.toString());
    }
}
0
-7 / 22 / 4
Регистрация: 07.03.2013
Сообщений: 229
29.06.2013, 19:01 4
Так можно
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
import java.io.BufferedReader;
import java.io.InputStreamReader;
 
    public class Debet {
         private int sumProceed;
         private int dateIncome;
         private int sumIncome; 
         private int dateLoan;
         private int sumLoan;
         private int neededSumLoan;
         private int realSumLoan;
         private int debtSum;
         private  int allMoney;
         private int mas[] = {sumProceed,dateIncome,sumIncome,dateLoan,sumLoan,neededSumLoan,realSumLoan,debtSum,allMoney};
         private static String mass[] = {"sumProceed","dateIncome","sumIncome","dateLoan","sumLoan","neededSumLoan","realSumLoan","debtSum","allMoney"};
         
    Debet(int[] Array){
        for(int x=0;x<Array.length;x++){
        mas[x]=Array[x];    
        } 
     }
    public String toString()
    {
         String rezult = "";
         for( int m=0; m<mas.length; m++){
         rezult += mass[m] +" - "+mas[m]+"\n"; 
         }
         return rezult;
    }
    public static void main(String[] args) throws Exception {
         BufferedReader bre = new BufferedReader(new InputStreamReader(System.in));     
         int a=0,b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0;
         int[] maza ={a,b,c,d,e,f,g,h,i};
     
         for(int x=0; x<maza.length; x++){
         System.out.println("Введите " + mass[x]+":"); 
         maza[x]= Integer.parseInt(bre.readLine()); 
         }
    Debet MyObject = new Debet(maza);
         System.out.println("");
         System.out.println("Результат:");
         System.out.println(MyObject.toString());
    }
}
0
2580 / 2253 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
29.06.2013, 19:06 5
Цитата Сообщение от Olllolll Посмотреть сообщение
int a=0,b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0;
никогда так не делайте

Цитата Сообщение от Olllolll Посмотреть сообщение
private int mas[] = {sumProceed,dateIncome,sumIncome,dateLoan,sumLoan,neededSumL oan,realSumLoan,debtSum,allMoney};
а это вообще непонятно зачем

Цитата Сообщение от Olllolll Посмотреть сообщение
Debet(int[] Array){
переменные с маленькой буквы

почитайте конвенцию о коде http://www.oracle.com/technetw... 36057.html
0
-7 / 22 / 4
Регистрация: 07.03.2013
Сообщений: 229
29.06.2013, 20:14 6
Цитата Сообщение от mutagen Посмотреть сообщение
Сообщение от Olllolll
private int mas[] = {sumProceed,dateIncome,sumIncome,dateLoan,sumLoan,neededSumL oan,realSumLoan,debtSum,allMoney};
а это вообще непонятно зачем
вам получилось запустить программу без этой строчки???
0
98 / 98 / 12
Регистрация: 05.05.2013
Сообщений: 1,208
29.06.2013, 20:17 7
@Olllolll, мне кажется имелось ввиду, что так не красиво передавать параметры в конструктор. @mutagen, так?
0
2580 / 2253 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
29.06.2013, 20:53 8
Вот варианты на выбор

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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
import java.util.Scanner;
 
/**
 * @author mutagen
 */
public class Debet {
 
    public static void main(String[] args) throws Exception {
        Scanner in = new Scanner(System.in);
        System.out.println("Enter Debet:");
        DebetClass debet = new DebetClass().
                setSumProceed(in.nextInt()).
                setDateIncome(in.nextInt()).
                setSumIncome(in.nextInt()).
                setDateLoan(in.nextInt()).
                setSumLoan(in.nextInt()).
                setNeededSumLoan(in.nextInt()).
                setRealSumLoan(in.nextInt()).
                setDebtSum(in.nextInt()).
                setAllMoney(in.nextInt());
 
        System.out.println(debet);
 
        System.out.println("Enter next Debet:");
 
        int[] arr = new int[9];
        for (int i = 0; i < arr.length; i++) {
            arr[i] = in.nextInt();
        }
        debet = new DebetClass(arr);
 
        System.out.println(debet);
 
        System.out.println("Enter next Debet:");
        
        debet = new DebetClass(in.nextInt(), in.nextInt(), in.nextInt(), in.nextInt(), 
                in.nextInt(), in.nextInt(), in.nextInt(), in.nextInt(), in.nextInt());
 
        System.out.println(debet);
 
 
    }
 
    static class DebetClass {
 
        private int sumProceed;
        private int dateIncome;
        private int sumIncome;
        private int dateLoan;
        private int sumLoan;
        private int neededSumLoan;
        private int realSumLoan;
        private int debtSum;
        private int allMoney;
 
        public DebetClass(int sumProceed, int dateIncome, int sumIncome, int dateLoan, int sumLoan, int neededSumLoan, int realSumLoan, int debtSum, int allMoney) {
            this.sumProceed = sumProceed;
            this.dateIncome = dateIncome;
            this.sumIncome = sumIncome;
            this.dateLoan = dateLoan;
            this.sumLoan = sumLoan;
            this.neededSumLoan = neededSumLoan;
            this.realSumLoan = realSumLoan;
            this.debtSum = debtSum;
            this.allMoney = allMoney;
        }
 
        public DebetClass() {
        }
 
        public DebetClass(int... arr) {
            this.sumProceed = arr[0];
            this.dateIncome = arr[1];
            this.sumIncome = arr[2];
            this.dateLoan = arr[3];
            this.sumLoan = arr[4];
            this.neededSumLoan = arr[5];
            this.realSumLoan = arr[6];
            this.debtSum = arr[7];
            this.allMoney = arr[8];
        }
 
        public DebetClass setSumProceed(int sumProceed) {
            this.sumProceed = sumProceed;
            return this;
        }
 
        public DebetClass setDateIncome(int dateIncome) {
            this.dateIncome = dateIncome;
            return this;
        }
 
        public DebetClass setSumIncome(int sumIncome) {
            this.sumIncome = sumIncome;
            return this;
        }
 
        public DebetClass setDateLoan(int dateLoan) {
            this.dateLoan = dateLoan;
            return this;
        }
 
        public DebetClass setSumLoan(int sumLoan) {
            this.sumLoan = sumLoan;
            return this;
        }
 
        public DebetClass setNeededSumLoan(int neededSumLoan) {
            this.neededSumLoan = neededSumLoan;
            return this;
        }
 
        public DebetClass setRealSumLoan(int realSumLoan) {
            this.realSumLoan = realSumLoan;
            return this;
        }
 
        public DebetClass setDebtSum(int debtSum) {
            this.debtSum = debtSum;
            return this;
        }
 
        public DebetClass setAllMoney(int allMoney) {
            this.allMoney = allMoney;
            return this;
        }
 
        @Override
        public String toString() {
            return "Debet{" + "sumProceed=" + sumProceed + ", dateIncome="
                    + dateIncome + ", sumIncome=" + sumIncome + ", dateLoan="
                    + dateLoan + ", sumLoan=" + sumLoan + ", neededSumLoan="
                    + neededSumLoan + ", realSumLoan=" + realSumLoan
                    + ", debtSum=" + debtSum + ", allMoney=" + allMoney + '}';
        }
    }
}
есть ещё вариант с просто сеттерами а не шаблон билдер, это уже найдите сами )

Добавлено через 8 минут
Цитата Сообщение от Olllolll Посмотреть сообщение
вам получилось запустить программу без этой строчки???
по поводу этого курс молодого бойца по массивам:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int [] arr;
 
arr = new int[10];
 
arr = new int[]{1, 2, 3, 4};
 
arr = {1,2,3};
 
int [] b = {1,2};
 
arr = b;
 
arr = b.clone();
 
System.arraycopy(b, 0, arr, 0, b.length);
0
-7 / 22 / 4
Регистрация: 07.03.2013
Сообщений: 229
29.06.2013, 22:48 9
соглашусь что код не идеальный, писал практически на ходу и не было времени разбираться.
По поводу массива, сарказма так и не понял, ну ладно...
0
2580 / 2253 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
30.06.2013, 01:33 10
Цитата Сообщение от Olllolll Посмотреть сообщение
По поводу массива, сарказма так и не понял, ну ладно...
это не сарказм, вы сказали
Цитата Сообщение от Olllolll Посмотреть сообщение
вам получилось запустить программу без этой строчки???
я показал вам несколько способов которыми я мог бы так сделать, но факт в том что он там вообще не нужен
0
-7 / 22 / 4
Регистрация: 07.03.2013
Сообщений: 229
30.06.2013, 02:12 11
Цитата Сообщение от mutagen Посмотреть сообщение
но факт в том что он там вообще не нужен
С его помощью я инициализировал поля класса, поскольку данные для инициализации у меня хранились в одном массиве, я посчитал что именно так будет, не знаю, лаконичней что ли. Собственно в конструкторе следом это я и сделал, + опять же, лаконичная форма записи. Достаточно удобно если условия работы программы в дальнейшем НЕ будут изменяться.
Далее я его использовал в методе toString(), что существенно сократило тело этого метода.
А вы говорите ненужен
0
2580 / 2253 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
30.06.2013, 03:47 12
Цитата Сообщение от Olllolll Посмотреть сообщение
А вы говорите ненужен
Создавать в памяти бесполезные объекты, ну ну

и статически инициализировать его null-ами очень лаконично )

если уж так сильно хочется инициализации массивом, загляните в мой код там где конструктор с varargs, и инициализация массивом есть и срача в обьекте нет.

по поводу toString(), вы использовали самый худший вариант
Java
1
rezult += mass[m] +" - "+mas[m]+"\n";
с конкатенацией строк динамически, такой код JVM уже не превратит в StringBuilder

ИТОГО:
1. бесполезная трата памяти на массивы в объекте, не несущие полезной нагрузки
2. использование динамической конкатенации - в масштабах коллекции этих обьектов около 100000 тысяч у вас компьютер умрёт выводить toString() этих объектов.
3. грязный код, нет проверки переменной Array на null перед началом итераций по ней, прямая дорога к NPE
думаю достаточно

ps: если вы ещё не поняли и собираетесь быть программистом, вам ваш руководитель устроит вырванные годы за такой говнокод.
0
98 / 98 / 12
Регистрация: 05.05.2013
Сообщений: 1,208
30.06.2013, 03:49 13
Да хватит уже. Юзайте мой код. Он идеален :-D
0
-7 / 22 / 4
Регистрация: 07.03.2013
Сообщений: 229
30.06.2013, 04:05 14
Цитата Сообщение от mutagen Посмотреть сообщение
статически инициализировать его null-ами очень лаконично )

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

Добавлено через 1 минуту
Цитата Сообщение от animator404 Посмотреть сообщение
Да хватит уже. Юзайте мой код. Он идеален :-D
нет! мой код
самый самый лючьшый!)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.06.2013, 04:05

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Конструктор и создание объекта в main
Уважаемые форумчане, помогите распутаться в 3-х соснах. Пожалуйста. Для наглядности, имеем код: ...

Создание объекта в многомерном массиве
Всем привет. Есть задача - создание объекта с помощью многомерного массива. Первый массив принимает...

Создание объекта в старых версиях JDK
Читаю книгу Тимоти Бадда &quot;Объектно-ориентированное программирование в действии&quot; (книга вроде 1995...

Создание объекта, класс которого зависит от условия
Доброго времени суток. Начал изучать Java, столкнулся с такой проблемой, как условное создание...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.