Сразу скажу - в java начинающий, как сделать цикл более "грамотным" и "логичным"?
public void scanner(EnigmaService enigma, String cypher_mode){
//enigma - обьект, который имеет метод enchiper i deschiper
// cypher_mode - "-е" или "-d"
Scanner scan = new Scanner(System.in);
while(scan.hasNextLine()){
if(cypher_mode.equals("-e")){
System.out.println(enigma.encipher(scan.nextLine()));
}
else{
if(cypher_mode.equals("-d")){
System.out.println(enigma.decipher(scan.nextLine()));
}
}
}
Ответ
Поскольку строковые значения -d и -e имеют отношение к параметрам командной строки, т.е. к по сути к пользовательскому интерфейсу, а не непосредственно к логике программы, можно завести enum.
public enum CipherMode {
ENCIPHER, DECIPHER;
}
Где-то у вас будет код вида:
CipherMode mode = null;
if (args.contains("-d")) { mode = DECIPHER }
if (args.contains("-e")) { mode = ENCIPHER; }
...
if (mode == null) {
System.out.println("Не указан режим работы шифра.");
return;
}
Дальше уже используйте этот enum:
public void scanner(EnigmaService enigma, CypherMode cipherMode){
Scanner scan = new Scanner(System.in);
while(scan.hasNextLine()){
String line = scan.nextLine();
switch(cipherMode) {
case ENCIPHER: enigma.encipher(line); break;
case DECIPHER: enigma.decipher(line); break;
}
}
PS. Подчеркивания в именах в Java не приняты.
Комментариев нет:
Отправить комментарий