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

Java для начинающих , прошу оценить код

16.09.2019, 21:56. Показов 1417. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
я только учусь писать на 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
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
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
import java.io.*;
import java.util.Scanner;
import java.lang.String;
 
public class Main {
    public static void Zashifrovar(int n) throws IOException {
        int KeyLong = 0, number1 = 0, i = 0, number2 = 0, TextLong = 0, g = 0, l = 0; //number 1 - сравниваем с длинной ключа . number2 - число которое заносится в массив keyarrInt
        char[] a = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'};
        System.out.println("Введите ключ");
        Scanner sc = new Scanner(System.in);
        String key = sc.nextLine();
        KeyLong = key.length();
        char[] keyarrChar = new char[KeyLong];
        while (number1 < KeyLong) {
            keyarrChar[i] = key.charAt(i);
            i++;
            number1++;
        }
        int[] keyarrInt = new int[KeyLong];
        i = 0;
        number1 = 0;
        while (i < KeyLong) {
            if (keyarrChar[i] == '0') {
                keyarrInt[l] = 0;
                l++;
            }
            if (keyarrChar[i] == '1') {
                keyarrInt[l] = 1;
                l++;
            }
            if (keyarrChar[i] == '2') {
                keyarrInt[l] = 2;
                l++;
            }
            if (keyarrChar[i] == '3') {
                keyarrInt[l] = 3;
                l++;
            }
            if (keyarrChar[i] == '4') {
                keyarrInt[l] = 4;
                l++;
            }
            if (keyarrChar[i] == '5') {
                keyarrInt[l] = 5;
                l++;
            }
            if (keyarrChar[i] == '6') {
                keyarrInt[l] = 6;
                l++;
            }
            if (keyarrChar[i] == '7') {
                keyarrInt[l] = 7;
                l++;
            }
            if (keyarrChar[i] == '8') {
                keyarrInt[l] = 8;
                l++;
            }
            if (keyarrChar[i] == '9') {
                keyarrInt[l] = 9;
                l++;
            }
            i++;
        }
        i = 0;
        l = 0;
        //String text = "C:\\Users\\123\\Desktop\\java\\kriptgraphy\\text.txt";
        BufferedReader text = new BufferedReader(new FileReader("C:\\Users\\123\\Desktop\\java\\kriptgraphy\\text.txt"));
        // Scanner tx = new Scanner(text);
        int symbol = text.read();
        while (symbol != -1) {
            char c = (char) symbol;
            if (c == ' ') {
                symbol = text.read();
                c = (char) symbol;
                System.out.print(" ");
 
            }
            TextLong++;
            char[] textarr = new char[TextLong];
            textarr[i] = c;
            while (number1 <= 25) {
                if (textarr[i] == a[number2]) {
                    g = number2 + keyarrInt[l];
                    while (g > 25) {
                        g -= 26;
                    }
                    l++;
                    System.out.print(a[g]);
                    if (l >= KeyLong) {
                        l -= KeyLong;
                    }
                }
                number2++;
                number1++;
            }
            number1 = 0;
            number2 = 0;
            i++;
            symbol = text.read();
        }
        System.out.println();
    }
 
 
    public static void Deshifrovat(int n) throws IOException {
        int KeyLong = 0, number1 = 0, i = 0, number2 = 0, TextLong = 0, g = 0, l = 0; //number 1 - сравниваем с длинной ключа . number2 - число которое заносится в массив keyarrInt
        char[] a = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'};
        System.out.println("Введите ключ");
        Scanner sc = new Scanner(System.in);
        String key = sc.nextLine();
        KeyLong = key.length();
        char[] keyarrChar = new char[KeyLong];
        while (number1 < KeyLong) {
            keyarrChar[i] = key.charAt(i);
            i++;
            number1++;
        }
        int[] keyarrInt = new int[KeyLong];
        i = 0;
        number1 = 0;
        while (i < KeyLong) {
            if (keyarrChar[i] == '0') {
                keyarrInt[l] = 0;
                l++;
            }
            if (keyarrChar[i] == '1') {
                keyarrInt[l] = 1;
                l++;
            }
            if (keyarrChar[i] == '2') {
                keyarrInt[l] = 2;
                l++;
            }
            if (keyarrChar[i] == '3') {
                keyarrInt[l] = 3;
                l++;
            }
            if (keyarrChar[i] == '4') {
                keyarrInt[l] = 4;
                l++;
            }
            if (keyarrChar[i] == '5') {
                keyarrInt[l] = 5;
                l++;
            }
            if (keyarrChar[i] == '6') {
                keyarrInt[l] = 6;
                l++;
            }
            if (keyarrChar[i] == '7') {
                keyarrInt[l] = 7;
                l++;
            }
            if (keyarrChar[i] == '8') {
                keyarrInt[l] = 8;
                l++;
            }
            if (keyarrChar[i] == '9') {
                keyarrInt[l] = 9;
                l++;
            }
            i++;
        }
        i = 0;
        l = 0;
        //String text = "C:\\Users\\123\\Desktop\\java\\kriptgraphy\\text.txt";
        BufferedReader text = new BufferedReader(new FileReader("C:\\Users\\123\\Desktop\\java\\kriptgraphy\\text.txt"));
        // Scanner tx = new Scanner(text);
        int symbol = text.read();
        while (symbol != -1) {
            char c = (char) symbol;
            if (c == ' ') {
                symbol = text.read();
                c = (char) symbol;
                System.out.print(" ");
            }
            TextLong++;
            char[] textarr = new char[TextLong];
            textarr[i] = c;
            while (number1 <= 25) {
                if (textarr[i] == a[number2]) {
                    g = number2 - keyarrInt[l];
                    while (g < 0) {
                        g += 26;
                    }
                    l++;
                    System.out.print(a[g]);
                    if (l >= KeyLong) {
                        l -= KeyLong;
                    }
                }
                number2++;
                number1++;
            }
            number1 = 0;
            number2 = 0;
            i++;
            symbol = text.read();
        }
        System.out.println();
    }
 
 
    public static void main(String[] args) throws IOException {
        Scanner k = new Scanner(System.in);
        System.out.println("Выберите a or b");
        char choice = k.next().charAt(0);
        while (choice != 'a' && choice != 'b') {
            System.out.println("Выберите а или b");
            choice = k.next().charAt(0);
        }
        if (choice == 'a') { Zashifrovar(0); }
        else Deshifrovat(0);
    }
очень надеюсь на вашу помощь
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.09.2019, 21:56
Ответы с готовыми решениями:

Прошу оценить код класса парсинга данных
Прошу заценить код, класс занимается парсингом данных. Прошу конструктивной критики. public class Commodyti { private...

Калькулятор для начинающих, прошу оценить
#include &lt;iostream&gt; #include &lt;math.h&gt; using namespace std; int menu (); int sum (); int razn (); int vozved (); int delen...

Прошу оценить код на C++
Сильно не пинайте, только начал изучать C++, написал вот такое кот. Что не так в этом коде? Перечислите, какие есть недостатки. Предложите...

4
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
16.09.2019, 22:47
Код убери в тени джава, читай как принято имена давать, давай понятные имена, убери повторяющийся код
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
16.09.2019, 22:47
BigFish, методы и переменные называем с маленькой буквы.
Вместо вот этой портянки с ифами
Цитата Сообщение от BigFish Посмотреть сообщение
if (keyarrChar[i] == '7') {
keyarrInt[l] = 7;
l++;
}
Можно заюзать
Java
1
2
keyarrInt[l] = '0' - keyarrChar[i];
l++;
И да, не надо называть переменную l
0
 Аватар для vvm28
771 / 539 / 67
Регистрация: 22.12.2013
Сообщений: 2,498
Записей в блоге: 26
16.09.2019, 23:47
Лучший ответ Сообщение было отмечено BigFish как решение

Решение

Выше уже сказали опытные люди по оформлению кода.

Цитата Сообщение от BigFish Посмотреть сообщение
Java
1
public static void Zashifrovar(int n)...
лучше наверное так:
Java
1
private static void encrypt(int n)...
Java
1
[quote="BigFish;13832867"]public static void Deshifrovat(int n)[/quote]
лучше наверное так:
Java
1
private static void decrypt(int n)...
То есть не использовать транскрипцию, а использовать английские названия и выражения.

Поищи и почитай "рекомендации по оформлению кода на java".

Путь к файлу можно было занести в переменную.
Как-то можно сократить или переписать лапшу из конструкций if()
Может сделать больше методов.
Маленькие методы и каждый отвечает за что-то одно.
В общем чтобы дать много рекомендаций, нужно будет написать целую книгу.
1
 Аватар для Aviz__
2748 / 2056 / 508
Регистрация: 17.02.2014
Сообщений: 9,483
17.09.2019, 08:42
есть ряд вопросов. если ты
Цитата Сообщение от BigFish Посмотреть сообщение
только учусь писать на java
то, зачем берешься за столь не тривиальные программы? про конвенцию кода, ты даже не моргала (ж.р. так, как рыба). как ты учишь материал, что такой турбулентный код, выше сказали уже почему. зачем тебе нужна проверка?
Цитата Сообщение от BigFish Посмотреть сообщение
понятно ли
нет!
Цитата Сообщение от BigFish Посмотреть сообщение
можно ли его как нибудь улучшить
можно! способов много))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.09.2019, 08:42
Помогаю со студенческими работами здесь

Прошу оценить компьютер для продажи
Добрый день, товарисчи! Оцените плиз сие железо! Intel Core i7-2600K 3400 МГц ASUSTeK P8Z68-V PRO 2 плашки 8 gb ddr3-1600...

Прошу оценить компьютер для продажи
процессор DualCore Intel Core i3-530, 2933 MHz (22 x 133) память DDR3-1333 DDR3 SDRAM 3003 Мб видюха NVIDIA GeForce GTS 250 (512 МБ) ...

Прошу оценить системник для продажи
Всему железу 4 года, работает исправно. Процессор Intel Core i7-3770K Материнка Asus P8Z77-V LX Оперативка Kingston DDR3-1333 4gb -...

Прошу оценить сборку для рабочего ПК
Задачи: Программирование. Android Studio&amp;IntelliJ IDEA В игры играть не планирую...(видеокарты возможно не будет, на интегрированном)...

Прошу оценить системный блок для продажи)
Ситуация такая) отдал товарищ системный блок в счет долга, говорит &quot;стоит прилично&quot;, но помогите пжлст советом за сколько его можно...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru