С Новым годом! Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
1 / 1 / 0
Регистрация: 20.08.2013
Сообщений: 20

Учусь писать правильно

22.08.2013, 15:33. Показов 1654. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго времени суток.
Начал изучать 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
package techcoding.chapter.ex1;
 
/*
 * Программа запроса аккаунта и пароля пользователя.
 * Работа с консолью
 */
 
public class Examples {
    public static void main(String[] args) {
        LoginPass obj = new LoginPass ();
        InputData check = new InputData();
        //получение логина
        String Login = obj.readLoginFromConsole();
        //получение пароля
        byte xa = check.getNameAcc(Login, 
                obj.readPassFromConsole());
        if ( xa == 1) {
            System.out.println("Здравствуйте, " + Login);
        } 
        else {
            System.out.println("Введены неправильные данные");
        }
    }
}


Второй файл
Кликните здесь для просмотра всего текста
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
package techcoding.chapter.ex1;
 
//класс для проверки правильности введеных данных
public class InputData {
    // проверка логина на наличие
    public byte getNameAcc (String login, String password) {
        byte confirm = 0;
        
        //"БД" логин/пароль
        String arrayString[]= {
                "Demon"
                };
        String arrayPass[] = {
                "a"
                };
        
        //проверка на правильность введенных данных
        for ( int i = 0; i < arrayString.length; i++) {
            if (login.equals(arrayString[i])
                    && password.equals(arrayPass[i])) 
            {
                confirm = 1;    
                //1 - если введена корректная пара логин/пароль
            }           
        }
        return confirm;
    }
}


Третий файл
Кликните здесь для просмотра всего текста
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
package techcoding.chapter.ex1;
 
import java.io.*;
 
//класс для получения логина и пароля
public class LoginPass {
    private String stringLogin;     //логин
    private String stringPassword;  //пароль
    
    //конструктор
    LoginPass () {
        stringLogin = "default";
        stringPassword = "none";
    }
    //байтовый поток
    InputStreamReader isr = new InputStreamReader (System.in);  
    //буфферизация данных
    BufferedReader buffreader = new BufferedReader (isr);
    
    //Запрос и получение логина
    public String readLoginFromConsole () {
        try {
            System.out.println("Введите логин и нажмите <ENTER>: ");
            stringLogin = buffreader.readLine();    
        }
        catch (IOException error) {
            System.err.print("Ошибка ввода " + error);
        }
        return stringLogin; //введенный логин
    }
    
    //запрос и получение пароля
    public String readPassFromConsole () {
        try { //обработчик ошибки чтения из консоли
            System.out.println("Введите пароль и нажмите <ENTER>: ");
            stringPassword = buffreader.readLine(); 
        }
        catch (IOException error) {
            System.err.print("Ошибка ввода " + error);
        }
        return stringPassword;  //введенный пароль
    }
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.08.2013, 15:33
Ответы с готовыми решениями:

Как правильно писать условия (if)
Почему выводит последний метод, хотя не должен выводить его, не так ли? Давайте темам осмысленные заголовки (тема переименованна) ...

Инкапсуляция, проба писать правильно
тема не та: работа с наследованием передача параметров. Есть класс: public class employee { private String name; ...

Учусь писать под Android
Наступил Новый Год и я решил для себя освоить новую нишу: программирование. Продвигать приложения я умею, а создавать - нет. По-этому...

3
 Аватар для animator404
99 / 99 / 12
Регистрация: 05.05.2013
Сообщений: 1,208
22.08.2013, 17:05
Молодец, что хочеш научится сразу писать правильно, но вряд ли у тебя это получится хорошо, так как требует постоянного менторства. Но... Все в твоих руках.
1) Молодец, что создаеш классы, "разделяеш логику", но в данном случае, думаю,если у тебя в классе только один метод, то стоит задуматься...
2) Также можно сделать методы класса проверки статическими и поместить все в один вспомогательный(проверочный) класс... не знаю зачем, наверное бредовый совет
3) Почему метод getNameAcc() возвращает byte, а не просто boolean?

Моих советов можеш не слушать так, как я в Java и сам новичок.
0
 Аватар для Ded_Vasilij
233 / 215 / 63
Регистрация: 01.09.2012
Сообщений: 2,103
22.08.2013, 18:16
animator404, я тоже новичок, но посоветовал бы использовать JPasswordField - все таки java, я так думаю, больше ориентирован на работу с GUI, нежели с консолью
0
 Аватар для lowercase
213 / 202 / 85
Регистрация: 09.05.2012
Сообщений: 494
22.08.2013, 23:13
пытатся писать сразу грамотный код это хорошо. но на больших задачах, вы так или иначе загрузнете и код станет сущим адом. даже при всем своем желании вы его не напишете правильно сразу. конечно, нет проблем хорошо написать приложение на 2-3 к строк "правильно". однако чтобы писать грамотный код знания одного лишь языка недостаточно. когда вы изучите язык, у вас вместо проблем "так, а этот метод перегружен или переопределен? хм, а разве методы внутренних(нестатических) классов переопределяют все методы с тем же именем из внешнего класса?", появлятся совсем другие гараздо более сложные проблемы, которые будут касатся уже не синтаксиса, а логики или даже архитектуры. в общем все что вы сейчас называете проблемами это далеко еще не проблемы. однако подход у вас хороший, если учитесь писать код то пытайтесь делать это максимально правильно.
мое личное замечание по коду - делайте более содержательные имена для классов, полей, методов, переменных.
второе(возможен срач, но дабы предотвратить скажу, что это мое личное имхо). бессмысленные коментари которые только засирают код. например.
//получение логина
String Login = obj.readLoginFromConsole();
да что вы такое вы такое говорите? а я то думал, что "считатьЛогинСКонсоли" означает считать почтовый адрес. извените за сарказм, но действительно неужели этот коментарий там так нужен? название метода у вас довольно ясно говорит, что мы считываем логин с консоли.
еще раз говорю - давайте содержательные названия и код не нужно будет коментировать. не бойтесь длинных названий методов.
в общем тут много чего можно говорить о том как лучше писать код. есть куча книг в которых авторы выкладывают свой опыт, накопившийся за десятки лет разработки.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.08.2013, 23:13
Помогаю со студенческими работами здесь

учусь писать и подключать DLL
Прошу извинить меня если вопрос уже задавали. Сейчас учусь писать и подключать DLL, программирую на C++Builder 2009, если что не так...

Что значит "Писать как все" или "Писать правильно на WPF"?
Доброго времени суток! Объясните, пожзалуйста, &quot;дураку&quot;, что значит &quot;писать на WPF как все&quot; или &quot;писать правильно на WPF&quot;?...

Как писать правильно?
switch (true) { case ($a == $aa and $b == $bb): case ($a == $ab and $b == $ba): default: }

Как писать правильно?
Привет, форумчане... Мой вопрос, больше к профессионалам. Какой из этих двух вариантов кода более правильный? &lt;a...

Как на писать правильно ?
В одномерном массиве, состоящем из N вещественных элементов, вычислить: 1) Сумму положительных элементов массива 2) ...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru