я получаю сообщение об ошибке unreachable statement
, когда я пытаюсь скомпилировать этот фрагмент кода на линии return oocc2.encrypt(input);
:Недоступен Заявление при попытке запустить программу
public String decrypt(String input) {
OOCaesarCipher oocc1 = new OOCaesarCipher(26-mainKey1);
OOCaesarCipher oocc2 = new OOCaesarCipher(26-mainKey2);
return oocc1.encrypt(input);
return oocc2.encrypt(input);
}
Я думаю, это потому, что у меня есть второй оператор возврата, но я не знаю, как еще написать этот метод с двумя целыми целыми числами. Первоначально этот метод был таким же в другом классе.
public String decrypt(String input) {
OOCaesarCipher oocc1 = new OOCaesarCipher(26-mainKey1);
return oocc1.encrypt(input);
}
Может кто-то, пожалуйста, поделитесь своими знаниями о том, как написать лучший метод, чтобы он компилировался без ошибок.
Я включил весь код в случае необходимости ссылки.
import edu.duke.*;
public class CaesarCipherTwoKeys {
private String alphabetLower;
private String alphabetUpper;
private String shiftedAlphabetLower1;
private String shiftedAlphabetUpper1;
private String shiftedAlphabetLower2;
private String shiftedAlphabetUpper2;
private int mainKey1;
private int mainKey2;
public CaesarCipherTwoKeys(int key1, int key2) {
alphabetLower = "abcdefghijklmnopqrstuvwxyz";
alphabetUpper = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
shiftedAlphabetLower1 = alphabetLower.substring(key1) + alphabetLower.substring(0,key1);
shiftedAlphabetUpper1 = alphabetUpper.substring(key1) + alphabetUpper.substring(0,key1);
shiftedAlphabetLower2 = alphabetLower.substring(key2) + alphabetLower.substring(0,key2);
shiftedAlphabetUpper2 = alphabetUpper.substring(key2) + alphabetUpper.substring(0,key2);
mainKey1 = key1;
mainKey2 = key2;
}
public String encrypt(String input) {
StringBuilder encryptedInput = new StringBuilder(input);
OOCaesarCipher oocc1 = new OOCaesarCipher(mainKey1);
OOCaesarCipher oocc2 = new OOCaesarCipher(mainKey2);
for (int index=0; index < input.length(); index++) {
if (index % 2 == 0 || index == 0) {
encryptedInput.replace(index,index+1,oocc1.encrypt(input.substring(index,index+1)));
}
else {
encryptedInput.replace(index,index+1,oocc2.encrypt(input.substring(index,index+1)));
}
}
return encryptedInput.toString();
}
public String decrypt(String input) {
OOCaesarCipher oocc1 = new OOCaesarCipher(26-mainKey1);
OOCaesarCipher oocc2 = new OOCaesarCipher(26-mainKey2);
return oocc1.encrypt(input);
return oocc2.encrypt(input);
}
}
А вот код OOCC, который я использую в качестве примера для написания этого один:
import edu.duke.*;
public class OOCaesarCipher {
private String alphabetLower;
private String alphabetUpper;
private String shiftedAlphabetLower;
private String shiftedAlphabetUpper;
private int mainKey;
public OOCaesarCipher(int key) {
alphabetLower = "abcdefghijklmnopqrstuvwxyz";
alphabetUpper = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
shiftedAlphabetLower = alphabetLower.substring(key) + alphabetLower.substring(0,key);
shiftedAlphabetUpper = alphabetUpper.substring(key) + alphabetUpper.substring(0,key);
mainKey = key;
}
public String encrypt(String input) {
StringBuilder encrypted = new StringBuilder(input);
for (int index=0; index < encrypted.length(); index++) {
Character currChar = encrypted.charAt(index);
int currentIndex = 0;
if (Character.isLowerCase(currChar)) {
currentIndex = alphabetLower.indexOf(currChar);
}
else {
currentIndex = alphabetUpper.indexOf(currChar);
}
if (currentIndex != -1 && Character.isLowerCase(currChar)) {
char newChar = shiftedAlphabetLower.charAt(currentIndex);
encrypted.setCharAt(index, newChar);
}
else if (currentIndex != -1) {
char newChar = shiftedAlphabetUpper.charAt(currentIndex);
encrypted.setCharAt(index, newChar);
}
}
return encrypted.toString();
}
public String decrypt(String input) {
OOCaesarCipher oocc = new OOCaesarCipher(26-mainKey);
return oocc.encrypt(input);
}
}
Это приводит к ошибке массива 'array dimension missing ' – user5745776
попробуйте эту замену String [] oocc1And2 = new String [2]; – dxpelou
Я отредактировал ответ, попробуйте код сейчас. – dxpelou