У меня возник вопрос о подписи значений в массиве. Я скопировал мой код ниже (я новичок) После компиляции и выполнения моего кода я могу увидеть только последнее значение в массиве. Зачем? Это очень простой шифрНазначение значений массиву
import java.util.Arrays;
import java.util.Scanner;
public class CipherManager {
String message;
int key;
int basic = -72;
int array[];
public void cipher() {
Scanner sc = new Scanner(System.in);
System.out.println("Type a text you want to cipher");
message = sc.nextLine();
System.out.println("Write down a number key");
while (!sc.hasNextInt()) {
if (sc.hasNextInt()) {
key = sc.nextInt();
sc.nextLine();
} else {
System.out.println("Error, enter a number ");
sc.next();
}
}
for (int i = 0; i < message.length(); i++) {
System.out.print(message.charAt(i));
array = new int[message.length()];
int litera = message.charAt(i) + key + basic;
array[i] = letter;
}
System.out.println(Arrays.toString(array));
}
}
Этот код не будет компилироваться ('letter' не объявлен нигде). Если он * * компилировался, у него не было бы описанного вами поведения (он бы взорвал «NullPointerException» в строке 'array [i] = letter;', поскольку вы никогда не инициализировали 'array'). –
Обычно полезно, если вы приложите некоторое усилие, чтобы фактически следовать правилам форматирования, то есть отступы при отправке кода, поскольку это затрудняет понимание вашего вопроса. Также ваш код в письменном виде не имеет смысла, поскольку вы используете переменную 'tablica', которую вы никогда официально не определяете. Что касается вашей реальной проблемы, вы переназначаете массив на новый массив на каждой итерации цикла for, который уничтожает предыдущие значения, поэтому конечный массив имеет только последний набор букв – RobV
Ну, вы правы, я переводил свои переменные к английскому в спешке, и я, к сожалению, пропустил несколько из них. Должен быть более осторожным в будущем – morthen